面向對象的特徵二:繼承性

1.繼承性的好處

1.減少代碼冗餘,提高代碼的復用性。
2.便於功能的擴展
3.為多態性使用提供了前提。

2.繼承性的格式

class A extends B{}
A:子類、派生類、subclass
B:父類、超類、基類、superclass

3.繼承性的理解:

企鵝:屬性(id,name),方法(吃、睡、自我介紹)
倉鼠:屬性(id,name),方法(吃、睡、自我介紹)

//企鵝類
public class Penguin { 
    private String name; 
    private int id; 
    public Penguin(String myName, int  myid) { 
        name = myName; 
        id = myid; 
    } 
    public void eat(){ 
        System.out.println(name+"會吃"); 
    }
    public void sleep(){
        System.out.println(name+"會睡覺");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "號" + name + "."); 
    } 
}
//倉鼠
public class Hamster { 
    private String name; 
    private int id; 
    public Hamster(String myName, int  myid) { 
        name = myName; 
        id = myid; 
    } 
    public void eat(){ 
        System.out.println(name+"會吃"); 
    }
    public void sleep(){
        System.out.println(name+"會睡覺");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "號" + name + "."); 
    } 
}

從上面的代碼可以看出,代碼很多都出現了重複,對維護造成不便(修改的代碼多,容易出錯),我們引用繼承性,把公共代碼抽取出來。

//公共父類
public class Animal { 
    private String name;
    private int id; 
    public Animal(String myName, int myid) { 
        name = myName; 
        id = myid;
    } 
    public void eat(){ 
        System.out.println(name+"會吃"); 
    }
    public void sleep(){
        System.out.println(name+"會睡");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "號" + name + "."); 
    } 
}

這個Animal類可以作為父類,擁有了子類的共同特徵,倉鼠和企鵝繼承了Animal類以後,就繼承了它的屬性與方法,子類可以不用重複寫父類的屬性和方法了。子類可以聲明自己特有的屬性或者方法。

//企鵝
public class Penguin extends Animal { 
    public Penguin(String myName, int myid) { 
        super(myName, myid); 
    } 
}
public class Hamster extends Animal { 
    public Hamster(String myName, int myid) { 
        super(myName, myid); 
    } 
}
4.Java繼承性的説明

Java繼承不支持多繼承,但支持多重繼承
面向對象的特徵二:繼承性_第1张图片

1.一個類可以被多個類繼承
2.Java中類的單繼承性:一個類只可以有一個父類
3.子父類是相對的概念
4.子類直接繼承的父類,稱為:直接父類。間接繼承的父類稱為:間接父類
5.子類繼承父類以後,就獲得了直接父類以及所間接父類中的屬性和方法(包括private,只因為封裝性的影響,使得子類不能直接調用父類的結構而已)
6.子類繼承父類以後,可以聲明自己特有的屬性或方法:實現功能的拓展
7.子類繼承父類必須要有構造器,若父類沒有定義構造器,默認是調用父類的空參構造器;如果父類有定義除空參構造器以外的其它構造器,子類至少需要調用父類所定義的其中一個構造器。

java.lang.Object類的理解

1.如果我們沒有顯式的聲明一個類的父類的話,則此類繼承java.lang.Object類
2.所有的java類(除java.lang.Object類以外)都直接或間接的繼承與java.lang.Object類。(即java.lang.Object為最終父類)
3.意味着,所有的java類都具有java.lang.Object類聲明的功能

你可能感兴趣的:(java)