簡體   English   中英

從子類的子類對成員的受保護的訪問

[英]Protected access to members from a subclass of the subclass

我正在為SJCP 6進行准備,但我發現到目前為止還沒有看到的詳細信息,可以從聲明該成員的類的子類的子類中訪問受保護的成員。 我很清楚,當我們嘗試通過繼承訪問受保護的成員時,只能從另一個包中對其進行訪問,但是該子類的子類又可以訪問它嗎?

這本書說:

子類外部包繼承了受保護的成員后,該成員(由子類繼承)將成為該子類外部的任何代碼的私有對象,但子類的子類除外。

我的問題是關於子類的子類,那些子類如何將成員視為受保護的成員? 他們可以訪問嗎? 因為它說成員對子類外部的任何代碼(子類的子類除外)都私有,所以,他們如何看待它?

如果BA的子類,並且CB的子類,則C也是A的子類,並且可以訪問Aprotected成員。

在超類中聲明為受保護的變量,方法和構造函數只能由其他包中的子類訪問,也可以由子類的子類或受保護成員的類的包中的任何類訪問。 我只是在這種情況下在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM