[英]Restricting child class from accessing parent class method
說我有一個接口I以及類A和B。
interface I
{
method();
}
class A implements I
{
method()
{ //Implementation 1
}
}
class B extends A
{
method()
{ //Implementation 2
}
}
我想限制B訪問“方法”。 調用b.method()時應始終使用a.method()而不是b.method實現,其中a和b分別是A和B的實例。 有什么解決方法嗎?
希望接口支持另一個訪問修飾符來處理這種情況。
正如Stealthjong在他們的評論中提到的那樣,您可以通過將A
的method()
final
:
interface I {
public void method();
}
class A implements I {
public final void method() {
System.out.println("Hello World!");
}
}
class B extends A { }
因為A
將final
修飾符應用於method()
的實現,所以B
無法重新定義它,而將始終調用它從A
繼承的版本。
如果我要寫:
B instance = new B();
instance.method();
我將看到輸出"Hello World!"
。
您可以這樣實現B:
class B extends A
{
method()
{
method(true);
}
method(boolean callSuper)
{
if (callSuper)
{
super.method();
} else {
method_impl();
}
method_impl()
{
//Implementation method of B class
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.