![](/img/trans.png)
[英]Java - Help me Understanding Access to protected members from subclass (Again)
[英]Protected access to members from a subclass of the subclass
我正在為SJCP 6進行准備,但我發現到目前為止還沒有看到的詳細信息,可以從聲明該成員的類的子類的子類中訪問受保護的成員。 我很清楚,當我們嘗試通過繼承訪問受保護的成員時,只能從另一個包中對其進行訪問,但是該子類的子類又可以訪問它嗎?
這本書說:
子類外部包繼承了受保護的成員后,該成員(由子類繼承)將成為該子類外部的任何代碼的私有對象,但子類的子類除外。
我的問題是關於子類的子類,那些子類如何將成員視為受保護的成員? 他們可以訪問嗎? 因為它說成員對子類外部的任何代碼(子類的子類除外)都私有,所以,他們如何看待它?
如果B
是A
的子類,並且C
是B
的子類,則C
也是A
的子類,並且可以訪問A
的protected
成員。
在超類中聲明為受保護的變量,方法和構造函數只能由其他包中的子類訪問,也可以由子類的子類或受保護成員的類的包中的任何類訪問。 我只是在這種情況下在eclipse中創建了一個示例,請嘗試一下..例如
包測試中的MyClass類具有一個受保護的名為get方法的方法
package test;
public class MyStaticClass {
protected int getmethod(){
int a=0;
return a;
}
}
同一包中的類A擴展了MystaticClass,並且在那里可以訪問受保護的方法
package test;
public class A extends MyStaticClass{
@Override
protected int getmethod() {
// TODO Auto-generated method stub
return super.getmethod();
}
}
現在,在另一個包中擴展B的B類也可以訪問相同的方法
package testing;
import test.A;
public class B extends A{
@Override
protected int getmethod() {
// TODO Auto-generated method stub
return super.getmethod();
}
}
現在,在另一個包中再次擴展B的c類也可以訪問它。
import testing.B;
public class c extends B{
@Override
protected int getmethod() {
// TODO Auto-generated method stub
return super.getmethod();
}
}
因此,可以在另一個包的子類的子類中訪問它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.