關(guān)于Java封裝称近、繼承與多態(tài)的想法

亂七八糟的想法#

封裝、繼承哮塞、多態(tài)是面向?qū)ο笳Z言的重要特征刨秆。
封裝最重要的就是對外部隱藏一些不必要和不許修改的成員,而公開一些對外部有用的成員忆畅。Java中使用private來實現(xiàn)隱藏衡未。
繼承是父類經(jīng)過擴展生成一個子類,子類可能比父類具有更多的屬性家凯,java教材上說眠屎,子類將獲得父類的全部成員變量和方法,而不能獲得父類的構(gòu)造器肆饶,那么:

  • 父類方法具有private訪問權(quán)限改衩,則方法對其子類是隱藏的,子類無法訪問該方法驯镊。這時有一個問題葫督,一個public權(quán)限的父類方法中調(diào)用了private權(quán)限的方法竭鞍,而這個public權(quán)限的方法被子類繼承,如果這時子類調(diào)用這個方法橄镜,那private權(quán)限的方法不是被執(zhí)行了嗎偎快?
  • 父類一個成員變量具有private訪問權(quán)限, 那么這個變量對于子類也是隱藏的洽胶,子類無法訪問這個變量晒夹。但是,在創(chuàng)建子類對象時姊氓,系統(tǒng)會為這個成員變量創(chuàng)建存儲空間嗎丐怯?
    小實驗:
class Superclass
{
    private int a = 0;
    public int b = 1;
    protected int c = 2;
    int d = 3;
    public Superclass()
    {
        System.out.println("Superclass Constructor!!");
        System.out.println(a+" "+b+" "+c+" "+d);
        call();
    }
    private void test()//一個private方法
    {
        System.out.println("Private test!");
    }
    public void call()
    {
        System.out.println("Superclass Call!!");
        this.test();
    }
}
class Subclass extends Superclass
{
    public int a = 3;
    private int b = 2;
    int c = 1;
    protected int d = 3;
    public Subclass()
    {
        System.out.println("Subclass Constructor!!");
    }
    public void call()
    {
        System.out.println("Subclass call");
        super.call();
    }
    public void test()
    {
        System.out.println("Override??");
    }
    public static void main(String[] args) 
    {
        Subclass test = new Subclass();
        test.call();
    }
}

運行結(jié)果:

Superclass Constructor!!
0 1 2 3
Subclass call
Superclass Call!!
Private test!
Subclass Constructor!!
Subclass call
Superclass Call!!
Private test!
  • 這個java程序中,在父類Superclass中定義了一個私有方法test()翔横,子類中定義了一個公共方法test(),可以看到读跷,這時子類并沒有Override這個方法,所以在super()調(diào)用父類構(gòu)造器時禾唁,執(zhí)行的是父類中的私有方法效览,同樣,在call()方法中調(diào)用test()時荡短,執(zhí)行的同樣是父類中的私有方法丐枉。但這時,并不能說子類獲得了這個方法掘托,因為子類根本沒有權(quán)限訪問修改它瘦锹。
  • 這時,如果將private方法改變?yōu)閜ublic權(quán)限烫映,這時運行結(jié)果變?yōu)椋?/li>
0 1 2 3
Subclass call
Superclass Call!!
Override??
Subclass Constructor!!
3 2 1 3
Subclass call
Superclass Call!!
Override??

此時沼本,父類的test()方法被子類Override,這時锭沟,在執(zhí)行super()和super.call()時抽兆,調(diào)用的是子類的test()方法。

  • 同時族淮,父類的所有成員變量在子類對象被創(chuàng)建時辫红,均被分配了存儲空間,包括private權(quán)限的的變量祝辣,只是贴妻,這個變量不能被子類訪問,只能在父類方法中被訪問蝙斜,因此名惩,子類也并沒有獲得這個變量。

需要注意的問題#

  • 關(guān)于繼承
  1. 方法Override時孕荠,子類方法的返回值類型應(yīng)比父類方法返回值類型更小或相等娩鹉,拋出異常應(yīng)比父類方法聲明拋出的異常類更小或相等攻谁,訪問權(quán)限應(yīng)比父類的大或相等,方法名和形參列表必須相同,覆蓋方法和被覆蓋方法應(yīng)同為類方法或者實例方法弯予。
  2. 子類不會獲得父類的構(gòu)造器戚宦,但子類構(gòu)造器會調(diào)用父類的構(gòu)造器,不論是否顯式的調(diào)用super()锈嫩,這樣一層層深入受楼,每個對象在創(chuàng)建時,都會調(diào)用Object類的構(gòu)造器呼寸。
    3.父類中的方法被子類Override時艳汽,在父類中調(diào)用該方法時,會執(zhí)行子類中的覆蓋方法等舔,如上面的例子就是這種情況骚灸。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糟趾,一起剝皮案震驚了整個濱河市慌植,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌义郑,老刑警劉巖蝶柿,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異非驮,居然都是意外死亡交汤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門劫笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芙扎,“玉大人,你說我怎么就攤上這事填大〗渫荩” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵允华,是天一觀的道長圈浇。 經(jīng)常有香客問我,道長靴寂,這世上最難降的妖魔是什么磷蜀? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮百炬,結(jié)果婚禮上褐隆,老公的妹妹穿的比我還像新娘。我一直安慰自己剖踊,他們只是感情好庶弃,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布轨蛤。 她就那樣靜靜地躺著,像睡著了一般虫埂。 火紅的嫁衣襯著肌膚如雪祥山。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天掉伏,我揣著相機與錄音缝呕,去河邊找鬼。 笑死斧散,一個胖子當(dāng)著我的面吹牛供常,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸡捐,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼栈暇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箍镜?” 一聲冷哼從身側(cè)響起源祈,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎色迂,沒想到半個月后香缺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邮破。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片域滥。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤适袜,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站慕趴,受9級特大地震影響痪蝇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冕房,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一躏啰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耙册,春花似錦给僵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔓同。三九已至,卻和暖如春蹲诀,著一層夾襖步出監(jiān)牢的瞬間斑粱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工脯爪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留则北,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓痕慢,卻偏偏與公主長得像尚揣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掖举,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法快骗,類相關(guān)的語法,內(nèi)部類的語法塔次,繼承相關(guān)的語法方篮,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 一、繼承 當(dāng)兩個事物之間存在一定的所屬關(guān)系耗跛,即就像孩子從父母那里得到遺傳基因一樣裕照,當(dāng)然,java要遺傳的更完美调塌,這...
    玉圣閱讀 1,052評論 0 2
  • (一)Java部分 1晋南、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,104評論 0 62
  • 平衡,一方面是各項利益兼顧羔砾,在綜合考慮后做決定负间;一方面是一碗水要端平,不要顧此失彼姜凄,橫生矛盾政溃。 做企業(yè)管理,有短期...
    自如得己閱讀 233評論 0 0
  • 彩虹地毯墊 萌萌棒棒糖 實用收納筐 詳細(xì)的視頻教程 by:希媽手作 手藝網(wǎng)态秧,讓平凡成詩
    王子小姐和玫瑰先生閱讀 284評論 0 2