JAVA入門系統教程(八)物件導向(繼承)

來源:互聯網
上載者:User

###物件導向(繼承)###

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. 方法的重寫:如果子類對繼承父類的方法不滿意,是可以重寫父類繼承的方法的,當調用方法時會有限調用子類的方法

文法規則:傳回值類型,方法名,參數類型及個數都要與父類繼承的方法相同,才叫方法重寫

例:在狗狗類中增加eat方法

package example;public class Dog extends Animal{public void eat() {System.out.println("年齡:"+age+"\n狗狗不吃東西就會餓");}}

5. 繼承中初始化順序

1)初始化父類再初始子類

2)先執行初始化對象中屬性,再執行構造方法中的初始化

例:

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()方法

在Object類裡面定義一個toString()方法的時候返回的對象的雜湊code碼(對象地址字串)

可以通過重寫toString()方法表示出對象的屬性。

2)equals()方法

比較的是對象的引用是否指向同一塊記憶體位址。

一般情況下比較兩個對象時比較他的值是否一致,所以要進行重寫。

此時若同時給age賦相同值

由此可見還是輸出false 在這我們建立equals方法

建立equals方法: Source --> Generate hashCode() and equals()...

@Overridepublic 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入門系統教程(六)物件導向(封裝)

JAVA入門系統教程(七)物件導向(封裝2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.