簡體   English   中英

如何訪問子類中超類的受保護方法?

[英]How to access a protected method of superclass in a subclass?

我在兩個不同的包中有父子類。 我覆蓋了一種保護類型的方法。 我想在子類中訪問受超類保護的方法。

考慮下面的代碼:

package package1;

public class Super
{
    protected void demoMethod()
    {
        System.out.println("In super method");
    }
}

package package2;

import package1.Super;

public class Sub extends Super
{
    @Override
    protected void demoMethod()
    {
        System.out.println("In sub method");
    }

    public static void main(String[] args) 
    {
        //code for accessing superclass demoMethod to print "In super method"
    }
}

在子類的主方法中,我要訪問打印“ In super method”的超類demoMethod 我知道demoMethod不會使用超類對象引用調用子類可見demoMethod

有沒有可能? 如果是,怎么辦?

以Java為新手,並提供替換主要方法中的注釋的答案。

在子類中使用super.demoMethod()或將其從子類中完全刪除

您的main()方法無法訪問demoMethod()的超類實現-因為它在子類中被覆蓋。

您的main()方法可以通過子類類型的引用訪問 demoMethod() ,即使它是受保護的,因為它與您的子類位於同一包中。 但是它將調用子類實現。

但是,如果您“使用超類對象引用來調用demoMethod”,則該方法將不可訪問,並且您的代碼將無法編譯。 您的超類在另一個包中。 標記為protected方法只能由子類和同一包中的代碼訪問。

如果在子類和超類中都public了該方法,則無論引用是demoMethod()類還是子類類型,調用demoMethod()都會調用子類實現。

子類的實例可以調用super.demoMethod()作為其方法的實現的一部分。 但是main()方法不能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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