本文目錄一覽:
- 1、java 可不可以繼承多個類?
- 2、java類是否可以多繼承?怎麼實現多繼承?
- 3、java中如何繼承多個父類,如何實現多個介面?
- 4、java中的介面為什麼可以多繼承,其他類不能呢?
- 5、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 類型,即常量,且介面中的方法都為抽象的,都沒有方法體。
資料來源:
java類是否可以多繼承?怎麼實現多繼承?
java類不可以多繼承。
java:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程。
Java具有簡單性、面向對象、分散式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分散式系統和嵌入式系統應用程序等。
貢獻及影響力:
Java 語言是一門隨時代快速發展的計算機語言程序,其深刻展示了程序編寫的精髓,加上其簡明嚴謹的結構及簡潔的語法編寫為其將來的發展及維護提供了保障。由於提供了網路應用的支持和多媒體的存取,會推動Internet和企業網路的Web的應用。
另外,為了保持Java的增長和推進Java社區的參與,Sun公司在Java One開發者大會上宣布開放Java核心源代碼,以鼓勵更多的人參與到Java社團活動中。來自Java社團和IBM等全球技術合作夥伴兩方面的支持,Java技術在創新和社會進步上繼續發揮強有力的重要作用,並且隨著其程序編寫難度的降低使得更多專業人員將精力放置於Java語言的編寫與框架結構的設計中。
java中如何繼承多個父類,如何實現多個介面?
java中沒有多繼承(就是不能繼承多個父類),只有多重繼承。。比如:\x0d\x0aclass A{\x0d\x0a}\x0d\x0a\x0d\x0aclass B extends A{\x0d\x0a}\x0d\x0a\x0d\x0aclass C extends B {\x0d\x0a}\x0d\x0a可以實現多個介面,比如:\x0d\x0ainterface A{\x0d\x0a}\x0d\x0a\x0d\x0ainterface B{\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0aclass C implements A, B\x0d\x0a{\x0d\x0a}
java中的介面為什麼可以多繼承,其他類不能呢?
java 在編譯的時候就會檢查 類是不是多繼承,如果出現多繼承編譯不通過。但是在java語法中介面是可以多繼承的。
拓展閱讀:
java 如果出現多繼承、父類中都有相同的屬性和name 值 子類如果使用父類的屬性和name 值 無法確定是哪一個父類的是 屬性和name值。
父類中如果相同的方法,並且子類並沒有覆蓋該方法。子類調用父類的時候 無法判斷是那個父類的方法。
介面是可以多繼承的。介面(jdk 1.7 以下版本)裡面的方法並有實現,即使介面之間具有相同的方法仍然是可以的 幾個介面可以有想通的實現類和實現方法。而且介面 介面裡面的成員變數都是 static final的 有自己靜態域 只能自己使用。
介面的實現類可以有多個 。(java bean 註解注入) 一個介面(用多個實現類)被注入進來。調用方法的時候。會先依據bean 查找那個 一樣的bean 。調用該實現類的方法。其次如過 實現類上都沒有註解的 bean 會按照載入的先後順序去調用的。
java類是否可以多繼承,怎麼實現多繼承?
1,java中只能利用介面達到多實現而已,跟多繼承相仿
2,java中唯一可以實現多繼承的
就是介面與介面之間了。
先說繼承
比如
class
fu1
{
void
show(){}
}
class
fu2
{
void
show(){}
}
class
zi
extends
fu1,fu2
{
void
show(){}
}
這時候
創建zi引用
調用show方法
java
虛擬機
就不知道該調用父類的哪個show方法了
同理
在介面中
class
fu1
{
void
show();
}
class
fu2
{
void
show();
}
class
zi
extends
fu1,fu2
{
void
show(){}
}
介面的fu1
和
f2
的show方法都是abstract的
抽象的
是沒有方法體的
所以只有子類的show方法是有方法體的
所以介面
可以多實現
也就是變數的多繼承
所以也可以推出
介面與介面之間也是可以多繼承的
就算介面a
的父類介面
b和c都有同一個方法show()
但是他們都是抽象方法
a繼承他們
也是抽象的
這個不就可以繼承了嗎?
由實現的例子就可以推出來
,介面確實是可以多繼承的。
原創文章,作者:HQBIU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329477.html