亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以創建從另一個子類擴展的子類?

是否可以創建從另一個子類擴展的子類?

開滿天機 2022-06-04 15:00:05
我仍在學習如何編寫 java 代碼,并且對繼承的工作原理有疑問。A類是父類,B類是子類,它繼承了A類的所有方法。假設我創建了第三個類,C類。如果我做C類擴展B類,這與做C類擴展A類有什么不同? 如果是這樣,怎么做?謝謝你。(對不起,如果格式很爛)
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

可視化這一點的最簡單方法是認為繼承就像父/子關系。你可以有父 -> 子 -> 孫子等。


當你有:


class A {}

class B extends A{}

class C extends B{}

C就像一個孫子A。這意味著C繼承了所有的方法B,包括那些B本身繼承自A.

In OOP words,C **is**A` 的方法。


但是,當你有


class A {}

class B extends A{}

class C extends A{}

C和B是兄弟類,這意味著它們都繼承了A的方法,但它們彼此不兼容。


在第一種情況下,這些是有效的:


C c = new C();

c.methodFromA(); //C inherits methods from A by being its grand-child

c.methodFromB(); //C inherits methods from B by being its child

c.methodFromC();

然而,在第二種情況下,當兩者都B直接C extends A:


C c = new C();

B b = new B();

c.methodFromA(); //C inherits methods from A by being its child

b.methodFromA(); //B inherits methods from A by being its child


c.methodFromB(); //not allowed

b.methodFromC(); //not allowed

B但是,和之間沒有直接關系C。這些是無效的:


B b = new B();

C c = new C();


b = (B) c; //invalid, won't compile


A b = b;

c = (C) b; //will compile, but cause a ClassCastException at runtime


查看完整回答
反對 回復 2022-06-04
  • 1 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號