#1. 繼承的概念:繼承是類別與類別的關係,是一種「is a」的關係
父類別--->基底類別 子類別--->衍生類別
# 註:JAVA中的繼承是單一繼承2. 繼承的優點:子類別擁有父類別的所有屬性和方法(private修飾的無效)實作程式碼重複使用
##3 .語法規則:class 子類別extends 父類別
範例:
package example; public class Animal { public int age; public String name; public void eat() { System.out.println("动物不吃东西就会饿"); } } package example; public class Dog extends Animal{ }
4.方法的重寫:如果子類別對繼承父類別的方法不滿意,是可以重寫父類別繼承的方法的,當呼叫方法時會有限呼叫子類別的方法
package example; public class Dog extends Animal{ public void eat() { System.out.println("年龄:"+age+"\n狗狗不吃东西就会饿"); } }
#5. 繼承中初始化順序
package example; public class Animal { public int age; public String name; public void eat() { System.out.println("年龄:"+age+"\n动物不吃东西就会饿"); } public Animal() { System.out.println("这是执行了Animal类"); } } package example; public class Dog extends Animal{ public Dog() { System.out.println("这是执行了Dog类"); } }再例如:我們在Animal類別中先給age賦值,再在Animal方法中給age再次賦值
package example; public class Animal { public int age = 10; public String name; public void eat() { System.out.println("年龄:"+age+"\n动物不吃东西就会饿"); } public Animal() { System.out.println("这是执行了Animal类"); age = 20; } }接下來我們看看輸出結果 #6. final關鍵字的使用 使用final關鍵字做標識有「最終的」意義,即不可修改不可變更
## final可以修飾類別、方法、屬性和變數
ps:當修飾類別的時,則該類別不可以被繼承
當修飾方法時,則此方法不依序被覆寫(重寫)
當修飾屬性時,則該類別的屬性不會進行隱含的初始化(類別的屬性化屬性必須有值)在建構方法中賦值(但只能選其一)
當修飾變數時,則變數的值只能賦一次值,即變成常數
7. super關鍵字的使用:在物件內部使用,可以代表父類別物件
1)存取父類別的屬性:super.age
2)存取父類別的方法:super.eat()
#例:
package example; public class Dog extends Animal{ public Dog() { System.out.println("这是执行了Dog类"); } public void method() { System.out.println(super.age); super.eat(); } }
3)super的應用
子類別的建構方法的過程中必須呼叫其父類別的建構方法。
public class Dog extends Animal{ public Dog() { super(); //这里是显示的 写与不写是一样的 但写的话必须放在第一行 System.out.println("这是执行了Dog类"); } public void method() { System.out.println(super.age); super.eat(); } }
如果子類別的建構方法中沒有顯示呼叫父類別的建構方法,則系統預設呼叫父類別無參構造方法
如果顯示的呼叫建構方法,必須在紫二磊的建構方法的第一行。
如果子類別建構方法中既沒有明確呼叫父類別的建構方法,而父類別又沒有無參考構造方法,則編譯出錯
public class Animal { public int age = 10; public String name; public void eat() { System.out.println("年龄:"+age+"\n动物不吃东西就会饿"); } /* public Animal() { System.out.println("执行Animal类构造方法"); }*/ public Animal(int age) { this.age = age ; } }
8. Object類:是所有類別的父類,如果一個類別沒有使用extends關鍵字明確標識繼承另外一個類,那麼這個類別預設繼承Object類別。
Object類別中的方法,適合所有的子類別。
1)toString()方法
定義一個toString()方法的時候傳回的物件的哈希code碼(物件位址字串)
可以通过重写toString()方法表示出对象的属性。
2)equals()方法
比较的是对象的引用是否指向同一块内存地址。
一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。
此时若同时给age赋相同值
由此可见还是输出false 在这我们建立equals方法
创建equals方法: Source --> Generate hashCode() and equals()...
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) //判断两个对象的类型是否相同 return false; Dog other = (Dog) obj; if (age != other.age) return false; return true; }
此时结果就为true了
####END####
相关文章:
以上是JAVA入門系統教學(八)物件導向(繼承)的詳細內容。更多資訊請關注PHP中文網其他相關文章!