本文目錄一覽:
JAVA中的繼承問題
B繼承了A類,並且又定義了一個變數i,這個變數i隱藏了父類A類的變數i,此時B類的每一個對象b中都有兩個屬性i:A.i=123以及B.i=456。對於一個B類引用b,使用b.i訪問時,訪問的是B.i屬性,也就是456。
而方法g(A a)的形參是A類引用,將一個B類對象傳遞到方法g中,在方法g中只能訪問這個B類對象的A類部分,因此此時a.i代表的是這個B類對象中的A.i屬性,也就是123。
關於JAVA,繼承問題。
和C++類似,可以繼承基類的公共屬性和方法。
在Java繼承里,父類的屬性還有方法在聲明時,如果是public關鍵字即公共屬性,則在子類繼承時,這些屬性和方法都會被子類繼承。受保護的也可以繼承
但是私有的類屬性成員和方法則無法繼承。
.子類繼承父類的成員變數
當子類繼承了某個類之後,便可以使用父類中的成員變數,但是並不是完全繼承父類的所有成員變數。具體的原則如下:
1)能夠繼承父類的public和protected成員變數;不能夠繼承父類的private成員變數;
2)對於父類的包訪問許可權成員變數,如果子類和父類在同一個包下,則子類能夠繼承;否則,子類不能夠繼承;
3)對於子類可以繼承的父類成員變數,如果在子類中出現了同名稱的成員變數,則會發生隱藏現象,即子類的成員變數會屏蔽掉父類的同名成員變數。如果要在子類中訪問父類中同名成員變數,需要使用super關鍵字來進行引用。
2.子類繼承父類的方法
同樣地,子類也並不是完全繼承父類的所有方法。
1)能夠繼承父類的public和protected成員方法;不能夠繼承父類的private成員方法;
2)對於父類的包訪問許可權成員方法,如果子類和父類在同一個包下,則子類能夠繼承;否則,子類不能夠繼承;
3)對於子類可以繼承的父類成員方法,如果在子類中出現了同名稱的成員方法,則稱為覆蓋,即子類的成員方法會覆蓋掉父類的同名成員方法。如果要在子類中訪問父類中同名成員方法,需要使用super關鍵字來進行引用。
java繼承問題
方法可以覆蓋。。。。。但是變數是不能覆蓋的。。。。
所以test裡面有兩個value, 一個是從父類parent繼承來的value(值為124),可以用super.value來獲取,另一個是自己的value(值是456)
所以這個方法是父類的方法,返回的也是父類value的值。
如果在子類test裡面覆蓋這個方法。。。結果就是456了。。
代碼如下:
class parent
{
protected String value = “123”;
public String getValue()
{
return value;
}
}
public class test extends parent
{
protected String value = “456”;
public String getValue(){
return value;
}
public static void main(String[] args)
{
System.out.print((new test()).getValue());
}
}
java中繼承問題,求高手解釋一下!
有點複雜,就解釋一條,其它的你自己思考吧。
System.out.println(a2.show(b)); 結果是「B And A」,為什麼不是 「B And B」或「A And A」呢?
已知a2的類型是A,實際對象是B。
那麼 a2.show(b) 以根據class A的定義來選擇方法,自然是進入show(A)方法。 正好 B 又覆蓋了 show(A)方法,所以最終執行的是 B.show(A) 方法。
java繼承中出錯
你先把12.19那個項目關閉再試一下
項目上右鍵選擇 close project
java中子類繼承父類時總是出錯怎麼回事
如果是多個類放在一個public里就會出錯
java-繼承-實例
1234567891011121314151617181920212223242526272829303132333435
//建一個A類class A{//成員變數 其中num是實參int num=0;//成員方法,其中 i 是型參public A(int i){//輸入int型文件輸出下面System.out.println(“aaaaaaaaaaaaaaaaaaa”);System.out.println(“i= “+i);//把輸入的i賦值給成員變數numnum=i;}}//B繼承Aclass B extends A{int num=0;//成員方法B.public B(){//繼承類A的方法.因為B繼承了A必然繼承了A的特性.所以輸入int值10令方法實現.super(10);System.out.println(“bbbbbbbbbbbbbbbbbbbb”);//這裡的num是類B的.System.out.println(“num= “+num);//如果想顯示類A的num則需要用下列的super.num.這裡注意num在類A中需是成員變數才可以.System.out.println(“super.num= “+super.num);}}//建立測試類Cpublic class C{//mainpublic static void main(String aa[]){//new 一個對象B()new B();}}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241348.html