A. java 中子類繼承父類的欄位時,佔用的是同一塊內存還是父類和子類對象分別佔用各自的一塊內存,請高人詳答
java語言中的對象採用的堆和棧的形式來存放,例如 Father f = new Father();f存放在棧中,其實只是一個堆內存的地址,真正地對象保存在此地址所指向的堆內存中。
所以你的答案就顯而易見了,Father f = new Father(); Child c = new Child();這里Father是父類,Child是子類,f和c是兩個不同的內存地址,他們的對象保存的地方也不同,所以他們的欄位也不會再同一片內存區域。
如果父類中有個欄位a,子類繼承了父類的這個欄位a,其實就是子類的那個內存區域裡面也會有一個a欄位,父類的內存區域中也有a欄位,他們兩個沒有什麼關系。
B. java中定義一個類可以同時繼承兩個類
java中一個類不能直接繼承兩個類。
比如說這樣:class A extends B,C
不能這樣寫,因為java不支持多繼承,但是可以像下面這樣實現繼承多個類:
class A extends B
class C extends A
這樣C就同時繼承了B和A兩個類。
(2)java繼承例子擴展閱讀
當子類繼承了某個類之後,便可以使用父類中的成員變數,但是並不是完全繼承父類的所有成員變數。具體的原則如下:
1)能夠繼承父類的public和protected成員變數;不能夠繼承父類的private成員變數;
2)對於父類的包訪問許可權成員變數,如果子類和父類在同一個包下,則子類能夠繼承;否則,子類不能夠繼承;
3)對於子類可以繼承的父類成員變數,如果在子類中出現了同名稱的成員變數,則會發生隱藏現象,即子類的成員變數會屏蔽掉父類的同名成員變數。如果要在子類中訪問父類中同名成員變數,需要使用super關鍵字來進行引用。
C. 什麼是繼承,試說明在java中實現多繼承的方法
繼承:是對象之間的層次關系(父類、子類)。需要用到extends關鍵字。一個類只能有一個父類。
繼承的作用:是子類可以直接調用父類的方法,可以重寫拓展父類的方法屬性。
方法的重寫:子類和父類的方法相同(名字、參數列表和返回類型都相同、是否有static修飾也一樣)子類的許可權不能比父類的小,拋出異常不能比父類大。
java中沒有直接多繼承。只能間接實現多繼承。
通過介面、抽象類實現多繼承如:A抽象類繼承了B類實現了多個介面,C繼承A類。
通過內部類如:A類繼承了B類,A類中的內部類InnerA類繼承了C類。那麼InnerA類實例可以調用C類的方法也可以調用A類的方法。
D. java中一個介面可以繼承幾個介面嗎
可以,介面是常量值和方法定義的集合,是一種特殊的抽象類,可以繼承多個介面。例如:Interface3 Extends Interface0, Interface1, interface……。
java介面解析如下:
在Java中,定義一個介面的形式如下:
[public] interface InterfaceName {
}
介面中可以含有變數和方法。但是要注意,介面中的變數會被隱式地指定為public static final變數,而方法會被隱式地指定為public abstract方法且只能是public abstract方法,並且介面中所有的方法不能有具體的實現、
也就是說,介面中的方法必須都是抽象方法。
要讓一個類遵循某組特地的介面需要使用implements關鍵字,具體格式如下:
class ClassName implements Interface1,Interface2,[....]{
}
可以看出,允許一個類遵循多個特定的介面。如果一個非抽象類遵循了某個介面,就必須實現該介面中的所有方法。對於遵循某個介面的抽象類,可以不實現該介面中的抽象方法。
(4)java繼承例子擴展閱讀:
java繼承介面的特性:
1)一個類如果實現了一個借口,則要實現該介面的所有方法。
2)方法的名字、返回類型、參數必須與介面中完全一致。如果方法的返回類型不是void,則方法體必須至少有一條return語句。
3)因為介面的方法默認是public類型的,所以在實現的時候一定要用public來修飾(否則默認為protected類型,縮小了方法的使用范圍)。