java多繼承
Ⅰ java語言可以通過什麼實現多繼承
(1)通過實現多個介面。
(2)通過內部類實現多重繼承。
publicclassFather{
publicintstrong(){
return9;
}
}
publicclassMother{
publicintkind(){
return8;
}
}
publicclassSon{
/**
*內部類繼承Father類
*/
classFather_1extendsFather{
publicintstrong(){
returnsuper.strong()+1;
}
}
classMother_1extendsMother{
publicintkind(){
returnsuper.kind()-2;
}
}
publicintgetStrong(){
returnnewFather_1().strong();
}
publicintgetKind(){
returnnewMother_1().kind();
}
}
Ⅱ java中的介面為什麼可以多繼承,其他類不能呢
java 在編譯的時候就會檢查 類是不是多繼承,如果出現多繼承編譯不通過。但是在java語法中介面是可以多繼承的。
Ⅲ java類是否可以多繼承,怎麼實現多繼承
類不能多繼承,但是介面可以繼承多個介面,所以通過介面來實現多繼承的功能。
Ⅳ java中定義一個類可以同時繼承兩個類
java中一個類不能直接繼承兩個類。
比如說這樣:class A extends B,C
不能這樣寫,因為java不支持多繼承,但是可以像下面這樣實現繼承多個類:
class A extends B
class C extends A
這樣C就同時繼承了B和A兩個類。
(4)java多繼承擴展閱讀
當子類繼承了某個類之後,便可以使用父類中的成員變數,但是並不是完全繼承父類的所有成員變數。具體的原則如下:
1)能夠繼承父類的public和protected成員變數;不能夠繼承父類的private成員變數;
2)對於父類的包訪問許可權成員變數,如果子類和父類在同一個包下,則子類能夠繼承;否則,子類不能夠繼承;
3)對於子類可以繼承的父類成員變數,如果在子類中出現了同名稱的成員變數,則會發生隱藏現象,即子類的成員變數會屏蔽掉父類的同名成員變數。如果要在子類中訪問父類中同名成員變數,需要使用super關鍵字來進行引用。
Ⅳ 使用內部類讓Java實現「多繼承」
使用內部類讓Java實現 多繼承
眾所周知 Java沒有像c++那樣支持多繼承 但是我們可以使用介面或內部類來模擬實現多繼承
我們使用內部類來實現一個繼承自消費者笑禪 又繼承自生產者的派生類
實際上Java之所以設計出內部類這個概念 一方面是為了更好的封裝性 另一方面就是藉助內部類模擬實現多繼承
首先我們定義一個消費者抽象基類
view plainprint?
/** * Consumer Class *@author androidyue *Last Modified 上午 */ public abstract class Consumer { protected float buyPrice protected abstract void buyGoods() }
跡升吵以下是生產者抽象基類
view plainprint?
/** * Procer Class *@author androidyue *Last Modified 上午 */ public abstract class Procer { protected float cost protected abstract void proce() }
使用內部類實現 多繼承 的派生子類
view plainprint?姿侍
/** *Java實現 多繼承
*@author androidyue *Last Modified 上午 */ public class InnerClassDemo extends Procer { private ConsumerBuyer buyer
public void desribeMySelf(){ System out println( 使用Java模擬多繼承 ) this proce() this buyer=new ConsumerBuyer() this buyer buyGoods()
}
@Override protected void proce() { st= f System out println( 我是生產者 我以每件 +st+ RMB的成本生產一件產品 然後以 元價格對外出售 ) }
class ConsumerBuyer extends Consumer{
@Override protected void buyGoods() { this buyPrice= f System out println( 我是消費者 我以 +this buyPrice+ RMB 買了一件售價 元的商品 不信吧 因為我也是生產者!^_^ )
}
}
}
在程序入口調用
view plainprint?
/** * the entrance of application *@author androidyue *Last Modified 上午 */ public class AppMain { public static void main(String[] args){ InnerClassDemo demo=new InnerClassDemo() demo desribeMySelf() }
lishixin/Article/program/Java/hx/201311/25912