簡體   English   中英

限制子類訪問父類方法

[英]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在他們的評論中提到的那樣,您可以通過將Amethod() final

interface I {
    public void method();
}

class A implements I {
    public final void method() {
        System.out.println("Hello World!");
    }
}

class B extends A { }

因為Afinal修飾符應用於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.

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