java-三大特性之一繼承

zw1996發表於2016-12-07

關於繼承的一些簡單介紹看我之前的部落格;
那裡介紹了,為什麼要有繼承,繼承是怎麼表達的,以及編寫了一個程式碼來解釋了一下,並且也還畫了一幅記憶體圖簡單介紹了一下;
連結;http://blog.csdn.net/zw1996/article/details/53208911

1;我們先說一下,關於繼承的規則;
1.1;關於成員變數的繼承規則,應該說是成員變數的可見性;
這裡還是回到了,訪問修飾符;之前部落格介紹;
http://blog.csdn.net/zw1996/article/details/53240155
總結就是一句話,
父類中的private的成員變數子類是訪問不了的;public的則可以;
這裡寫圖片描述
1.2;關於父類成員的隱藏;
當子類和父類有相同的成員(方法或變數)時的時候,那麼此時父類的成員會被隱藏,所有的呼叫都是呼叫的子類這個成員,除非使用super.這樣才能訪問到這個父類的成員;
這裡寫圖片描述

這裡寫圖片描述

//這樣的程式碼還是對的,呼叫的是子類的方法;
public class Main{

    public static void main(String[] args){
            Car bus = new Bus();

            bus.show();
    }

}
/*
public class Car{
    public void show(){
        System.out.println("呼叫父類");
    }

}

public class Bus extends Car{

    public void show(){
        System.out.println("呼叫子類");
        super.show();
    }

}

*/
//這個程式碼就是不行了;
//因為父類裡面沒喲show方法,沒有構成重寫;
//因此父類的引用是看不到子類的方法的;
//重寫其實父類引用也是看的父類的方法,只是;裡面存在動態繫結因此呼叫的是子類的方法;
public class Main{

    public static void main(String[] args){
            Car bus = new Bus();

            bus.show();
    }

}
/*
public class Car{

}

public class Bus extends Car{

    public void show(){
        System.out.println("呼叫子類");
        super.show();
    }

}

*/

這裡寫圖片描述

使用super呼叫出父類的方法;
這裡寫圖片描述

1.3;this和super;
在java中this和super與繼承是密切相關的,
this常用來引用當前物件;
super常用來引用父類物件;
這個在之前的例項中體現了;

1.4;強制型別轉化;
這個其實和基礎資料型別的轉化差不多,只是這裡是引用型別的轉化;
說一下引用吧;
之前不斷的說什麼父類引用,子類引用,什麼的;
其實這些引用只是看物件的角度;
new出一個子類物件,站在子類的角度看,當然全部可以看到,
但是站在父類的角度看,則只能看到父類的那部分;這個可以看記憶體圖了;
關於這裡了,就可以來強制轉化;
這裡寫圖片描述

還有一個比較有趣的問題關於引用型別的轉化;這個還是單獨拿出來說吧;
下次貼連結;

還有一個關於繼承的構造方法的例子;
就是例項化子類的時候一定會先例項化父類;
1.5;注意所有類都繼承與Object類,並且所有類都包含Object類中的方法;下次細說;

繼承就暫時總結到這裡了, 以後再來完善;

相關文章