正如問題所述,我想知道如何在其他類可以訪問的類中創建函數,但子類不能。我有一個類有一些公共getter和setter,我希望我的文檔類有權訪問,但我不希望子類具有這些功能,因爲它們對子類沒用。如何製作不被子類繼承的公共方法?
例如
public class SomeClass
{
public function SomeClass() {}
public function notInherited():void { trace("Not inherited"; }
}
public class OtherClass extends SomeClass
{
public function OtherClass()
{
notInherited(); //Want this to return an error
}
}
public class HasAccess
{
public function HasAccess()
{
notInherited(); //Not inherited
}
}
我知道這可能有事情做與自定義命名空間,但關於他們的搜索起來後,我還是真的沒有什麼,他們是如何工作太多的瞭解。就是這樣;謝謝閱讀。
你不能,如果你有任何類訪問除子類以外的方法,你描述了什麼。如果一種方法具有公共訪問權限(而內部是公共訪問的一種形式),那麼任何語言都不可能做到這一點,那麼公共訪問不能被任何其他類別拒絕,我應該添加完全不相關的甚至嘗試實現。如果該方法對子類沒有影響,那麼讓它不起作用,只要這些方法不能被覆蓋,爲什麼你會關心這麼多。 – BotMaster
@BotMaster對於OP來說很清楚,使用'internal' *會限制對同一個包中的子類*的訪問,而不同包中的子類將不能*訪問。我確定這就是你的意思。 – Aaron
這還遠遠不符合法案,並且效果不會影響只有所有類別的子類。同一包中的所有類和子類都將具有訪問權限,所有類和子類之外的包都將無法訪問,這是非常不同的。由於這些方法對子類沒有影響,因此將它們標記爲最終應該就足夠了。 – BotMaster