java類繼承多個類
❶ java 可不可以繼承多個類
1,java 是不可以繼承多個類,java是單繼承的,但是java 通過 介面可以實現多繼承
2,也就是說, 一個java類只能繼承一個父類, 但可以有多個介面.
3,若子類繼承的父類中擁有相同的成員變數,子類在引用該變數時將無法判別使用哪個父類的成員變數。如:
public class classA // 父類 classA
{
private int num = 0;
}
public class classB // 父類 classB
{
private int num = 1;
}
public class classC extends classA,classB // 子類 classC 繼承於 classA 和 classB
{
public static void main(String [] args)
{
classC obj = new classC();
obj.print(); // 調用父類成員變數 num , 那 num 等於 0 還是 1 ?
}
public void print()
{
System.out.println(super.num);
}
}
2.若一個子類繼承的多個父類擁有相同方法,同時子類並未覆蓋該方法(若覆蓋,則直接使用子類中該方法),那麼調用該方法時將無法確定調用哪個父類的方法。如:
public class classA // 父類 classA
{
public void fun()
{
System.out.print("hello");
}
}
public class classB // 父類 classB
{
public void fun()
{
System.out.print("hello");
}
}
public class classC extends classA,classB
{
public static void main(String [] args)
{
classC t = new classC();
t.print();
}
public void print()
{
super.fun(); // 調用父類中 fun 方法,但由於classA、classB都有fun()方法,將無法確定使用
// 哪個父類中的方法
}
}
因此,Java僅允許單繼承,即一個子類只能繼承於一個父類。但為了拓展子類的功能,Java使用介面以克服不使用多繼承帶來的不足。
介面是一個特殊的抽象類,介面中成員變數均默認為 static final 類型,即常量,且介面中的方法都為抽象的,都沒有方法體。
資料來源:http://blog.sina.com.cn/s/blog_6ed1419201013x47.html
❷ java如何繼承兩個類
一個類不能直接繼承多個類,java是單繼承語言。
比如說這樣:class A extends B,C 不能這樣寫,因為java不支持多繼承。
但是可以像下面這樣實現繼承多個類:class A extends B,class C extends A,這樣C就同時繼承了B和A兩個類了。
❸ Java類的繼承
一個類不能直接繼承多個類,java是單繼承語言。比如說這樣:class A extends B,C 不能這樣寫,因為java不支持多繼承。但是可以像下面這樣實現繼承多個類:class A extends B,class C extends A,這樣C就同時繼承了B和A兩個類了。
❹ java:一個類繼承其他類和繼承介面的問題
可以啊,
兩個介面A,B,類C
B
extends
A,
Class
C
implements
B
那麼,C就要實現介面A,B裡面的方法。
❺ java中定義一個類可以同時繼承兩個類嗎
java不支持多重繼承,也就是不能同時繼承兩個類,但可以實現多個介面。
❻ 在JAVA中繼承類有什麼特點可以多重繼承嗎
JAVA中,繼承相對與類來說,一個類只能繼承一個父類,但可以實現多個介面,對於介面來說,可以繼承多個.
繼承
:子類繼承超類,是類之間的關系,關系是相對的。子類繼承超類的方法和屬性,並且可以有自己的屬性和方法,還可以重寫超類的方法(方法重寫)。
繼承一個類,只要用extends
關鍵字把一個類的定義合並到另一個中就可以了
❼ java類是否可以多繼承,怎麼實現多繼承
在沒有好好地研習面向對象設計的設計模式之前,我對Java介面和Java抽象類的認識還是很模糊,很不可理解。
剛學Java語言時,就很難理解為什麼要有介面這個概念,雖說是可以實現所謂的多繼承,可一個只有方法名,沒有方法體的東西,我實現它又有什麼用呢?我從它那什麼也得不到,除了一些方法名,我直接在具體類里加入這些方法不就行了嗎?
為什麼一定要有抽象類這個概念?為什麼就不能把這個父類寫成一個具體的類,子類再繼承它不就可以了嗎?何必弄一個抽象類出來,還要弄一些沒有方法體的抽象方法,弄得又象介面又象類的,讓人捉摸不定。
當我開始學習java設計模式,真正走進面向對象設計的大門之後,我才發現,自己對面向對象設計的理解原來是那麼的片面,那麼的膚淺,根本就沒有真正理解面向對象思想的精髓,在某一種程度上還受著面向過程的影響,以為弄出了一個個類,就算是面向對象了,而其實還是被過程所驅使著。
我還是說說我現在對面向對象思想的理解吧,不一定正確全面,但我想應該還算是比以前略有進步吧。
面向對象思想,我覺得最關鍵的就是抽象。
一個軟體設計的好壞,我想很大程度上取決於它的整體架構,而這個整體架構其實就是你對整個宏觀商業業務的抽象框架,當代表業務邏輯的高層抽象層結構合理時,你底層的具體實現需要考慮的就僅僅是一些演算法和一些具體的業務實現了。當你需要再開發另一個相近的項目時,你以前的抽象層說不定還可以再次利用呢,面對對象的設計,復用的重點其實應該是抽象層的復用,而不是具體某一個代碼塊的復用,是不是一下子感覺自己對復用理解的高度又上升了一層?^_^
說到了抽象,我就不能不提到曾讓我頭痛的Java介面和Java抽象類了,這也是本文我想說的重點。
既然面向對象設計的重點在於抽象,那Java介面和Java抽象類就有它存在的必然性了。
Java介面和Java抽象類代表的就是抽象類型,就是我們需要提出的抽象層的具體表現。OOP面向對象的編程,如果要提高程序的復用率,增加程序的可維護性,可擴展性,就必須是面向介面的編程,面向抽象的編程,正確地使用介面、抽象類這些太有用的抽象類型做為你結構層次上的頂層。
Java介面和Java抽象類有太多相似的地方,又有太多特別的地方,究竟在什麼地方,才是它們的最佳位置呢?把它們比較一下,你就可以發現了。
1、Java介面和Java抽象類最大的一個區別,就在於Java抽象類可以提供某些方法的部分實現,而Java介面不可以,這大概就是Java抽象類唯一的優點吧,但這個優點非常有用。
如果向一個抽象類里加入一個新的具體方法時,那麼它所有的子類都一下子都得到了這個新方法,而Java介面做不到這一點,如果向一個Java介面里加入一個新方法,所有實現這個介面的類就無法成功通過編譯了,因為你必須讓每一個類都再實現這個方法才行,這顯然是Java介面的缺點。
2、一個抽象類的實現只能由這個抽象類的子類給出,也就是說,這個實現處在抽象類所定義出的繼承的等級結構中,而由於Java語言的單繼承性,所以抽象類作為類型定義工具的效能大打折扣。
在這一點上,Java介面的優勢就出來了,任何一個實現了一個Java介面所規定的方法的類都可以具有這個介面的類型,而一個類可以實現任意多個Java介面,從而這個類就有了多種類型。
3、從第2點不難看出,Java介面是定義混合類型的理想工具,混合類表明一個類不僅僅具有某個主類型的行為,而且具有其他的次要行為。
4、結合1、2點中抽象類和Java介面的各自優勢,具精典的設計模式就出來了:聲明類型的工作仍然由Java介面承擔,但是同時給出一個Java抽象類,且實現了這個介面,而其他同屬於這個抽象類型的具體類可以選擇實現這個Java介面,也可以選擇繼承這個抽象類,也就是說在層次結構中,Java介面在最上面,然後緊跟著抽象類,哈,這下兩個的最大優點都能發揮到極至了。這個模式就是「預設適配模式」。
在Java語言API中用了這種模式,而且全都遵循一定的命名規范:Abstract +介面名。
Java介面和Java抽象類的存在就是為了用於具體類的實現和繼承的,如果你准備寫一個具體類去繼承另一個具體類的話,那你的設計就有很大問題了。Java抽象類就是為了繼承而存在的,它的抽象方法就是為了強制子類必須去實現的。
使用Java介面和抽象Java類進行變數的類型聲明、參數是類型聲明、方法的返還類型說明,以及數據類型的轉換等。而不要用具體Java類進行變數的類型聲明、參數是類型聲明、方法的返還類型說明,以及數據類型的轉換等。
我想,如果你編的代碼裡面連一個介面和抽象類都沒有的話,也許我可以說你根本沒有用到任何設計模式,任何一個設計模式都是和抽象分不開的,而抽象與Java介面和抽象Java類又是分不開的。
理解抽象,理解Java介面和抽象Java類,我想就應該是真正開始用面向對象的思想去分析問題,解決問題了吧。
❽ java 如果一個類繼承兩個類 方法名怎麼寫
/java只能單繼承,希望同時繼承多個類的話可以考慮implements.比如說:
classAextendsBimplementsC,D
{
//...
}
❾ java 中怎麼樣同時繼承兩個類
一個類不能直接繼承多個類,java是單繼承語言。
比如說這樣:class
A
extends
B,C
不能這樣寫,因為java不支持多繼承。
但是可以像下面這樣實現繼承多個類:class
A
extends
B,class
C
extends
A,這樣C就同時繼承了B和A兩個類了。