Ⅰ java 中一個子類可不可以繼承多個父類如果能,怎麼表示
java不支持多繼承。因為多繼承有背面向對象編程。但是可以繼承多個介面。sun公司設計java的時候原則上不允許程序員多繼承,但是還是開了個後門,你可以再一個類中寫上一個或多個內部類,再讓其他類來繼承他,變相的也是多繼承了。但是不建議這么做,非常影響程序的可讀性,而且內部類處理起來不方便。
Ⅱ Java對於多重繼承是怎麼實現的
Java對於多重繼承是怎麼實現的?
首先回答這個問題之前,我需要說明下什麼是繼承?什麼是多重繼承和單繼承?java採用何種機制來實現多重繼承:
1.1繼承是面向對象編程的一種特性,是保留原有類功能的前提下拓展或改寫部分功能,實現代碼復用的方式.。
1.2單繼承就是一個類只可以繼承自一個父類,多繼承是指一個類可以同時繼承多個父類。
1.3java中使用的是單繼承,也就是一個類有且只能有一個父類,java中可以使用介面實現來實現類似多繼承的效果。
2.下面著重介紹Java中如何實現多繼承:
如下是多重繼承示例:
interface CanFight{
void fight();
}
interface CanSwim{
void swim();
}
interface CanFly{
void fly();
}
class ActionCharacter{
public void fight(){
System.out.println("I can fight!");
}
}
class Hero extends ActionCharacter implements CanFight,CanSwim,CanFly{
public void swim(){
System.out.println("I can swim!");
}
public void fly(){
System.out.println("I can fly!");
}
}
public class Adventure {
public static void t(CanFight x){x.fight();
}
public static void u(CanSwim x){x.swim();
}
public static void v(CanFly x){x.fly();
}
public static void w(ActionCharacter x){x.fight();
}
public static void main(String[] args){
Hero h=new Hero();
t(h);
u(h);
v(h);
w(h);
}
}
從這個實例中,不能看出Java對於多繼承是如何實現的。
運行結果:
I can fight!
I can swim!
I can fly!
I can fight!
以上就是Java對於多繼承是如何實現的說明
Ⅲ 什麼是繼承,試說明在java中實現多繼承的方法
繼承:是對象之間的層次關系(父類、子類)。需要用到extends關鍵字。一個類只能有一個父類。
繼承的作用:是子類可以直接調用父類的方法,可以重寫拓展父類的方法屬性。
方法的重寫:子類和父類的方法相同(名字、參數列表和返回類型都相同、是否有static修飾也一樣)子類的許可權不能比父類的小,拋出異常不能比父類大。
java中沒有直接多繼承。只能間接實現多繼承。
通過介面、抽象類實現多繼承如:A抽象類繼承了B類實現了多個介面,C繼承A類。
通過內部類如:A類繼承了B類,A類中的內部類InnerA類繼承了C類。那麼InnerA類實例可以調用C類的方法也可以調用A類的方法。
Ⅳ 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關鍵字來進行引用。