[英]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.