java物件導向繼承

禿頭少年打程式碼發表於2020-11-27

java物件導向繼承

繼承體現的就是兒子繼承父親的特徵和一些方法,徒弟繼承師傅的手藝等,程式中,多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那麼多個類就無需多定義這些屬性和行為。
格式:
	class 子類名 extends 父類名{}
繼承的優點:1.提高了程式碼的複用性
		  2.提高了程式碼的維護性
		  3.繼承是多型的前提
繼承的缺點:類的耦合性增強了,耦合性就是類魚類之間的關係更密切的意思,就是如果想要改某個功能就需要考慮其他類適不適應,不利於後期程式碼維護和擴充套件。
注意:1.繼承是單繼承不能多繼承可以多層繼承
	2.繼承不能繼承父類私有的方法
	3.繼承不能繼承父類的構造方法
	4.不要為了部分功能去繼承

java繼承中構造方法的關係

子類所有的構造方法都會預設訪問父類的空參構造方法
因為子類繼承父類中的資料,可能還會使用父類的資料,所以,子類初始化之前,一定會完成父類的初始化
其實每一個構造方法的預設第一句都是super();
super:代表的是父類的儲存空間的標識,可以用super關鍵字呼叫父類的成員變數、成員方法,還有父類的構造方法
//案列:                           
class A{
    int num=10;
    public A(){
         System.out.println(num);           
    }                                    
}
class B extends A{
    int num=20;
    public B(){
         System.out.println(num);
    }
    public B(int x){
        int y=x+num;
        System.out.println(y);
    }
}
class MyTest{
    public static void main(String[] args){
        B b=new B();
        B b=new B(100);
    }
}
上述程式碼執行結果是10 20 10 120 在這裡要說一下子類和父類同名的成員變數該如何訪問。
採取的就是就近原則,比如在子類中訪問一個變數的查詢順序
		1.在子類方法區域性範圍查詢,有就使用
		2.在子類的成員範圍找,有就使用
		3.在父類中的成員範圍找,有就使用
		4.如果還找不到,就報錯

java重寫

當子類需要父類的功能,但是功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣就可以沿襲了父類的功能,又定義了子類的特有的內容
重寫格式:  就是在子類寫和父類一摸一樣的方法宣告(方法名,形參,返回值型別)
注意:1.父類中私有方法不能被重寫
	2.子類不能重寫父類的構造方法
	3.子類重寫父類時,訪問許可權不能更低(最好一致)
	4.靜態方法不參與重寫
//案例
public class Animal {
    String name;
    int age;
    public void run(){
        System.out.println("僅僅跑步");
    }
    public void eat(){
        System.out.println("吃飯飯");
    }
}
public class Cat extends Animal {
    public Cat(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void run() {
        super.run();
    }
    public void eat() {
        System.out.println(this.name+"吃魚");    //Cat進行重寫eat()
    }
}
public class MyTest {
    public static void main(String[] args) {
        Cat cat = new Cat("小貓",3);
        System.out.println("我的寵物叫:"+cat.name+","+cat.age+"歲了");
        cat.run();
        cat.eat();
    }
}
上述程式碼執行結果是我的寵物叫 小貓,3歲了 僅僅跑步 小貓吃魚
注意方法過載和重寫的區別:
過載:一個類中有多個同名的方法,但引數個數或引數型別不同
重寫:子類重寫父類的方法,必須和父類具有一樣的方法宣告(方法名,形參,返回值型別)

相關文章