[英]Java: How to call upon a method in a main class where the method is in another class which extends an abstract class
[英]How to call the abstract method from a class which is not in hierarchy in java
下面是我的代碼。 我有一個抽象類Myabatract
,它具有方法myMethod
並且我有一個子類MySubClass
,其中重寫了myMethod
。 在我的客戶端類中,我有一個方法callMethod
,我想直接從其中調用Myabatract
類的myMethod
,這可能嗎?
abstract class Myabatract {
public void myMethod() {
System.out.println("This is from Myabatract");
}
}
class MySubClass extends Myabatract {
public void myMethod() {
System.out.println("This is from MySubClass");
super.myMethod();
}
}
class Client{
public void callMethod(){
}
}
您可以創建abstract class
的匿名實現。 考慮到它不使用任何abstract
方法,這一點特別容易。
class Client {
public void callMethod() {
Myabatract instance = new Myabatract() { /* nothing to implement*/ };
instance.myMethod();
}
}
作為MySubClass
類型的用戶,您無法調用Myabatract
方法,因為它已被覆蓋,除非MySubClass
公開它。 您唯一的辦法是創建另一個方法,該方法從MySubClass
(或其他子實現)中公開super
方法。
需要注意的是這不會工作是非常重要的:
class Client {
public void callMethod() {
MySubClass instance = new MySubClass() {
@Override
public void myMethod() {
super.myMethod();
}
};
instance.myMethod();
}
}
super
是非匿名類MySubClass
,這意味着實際上沒有任何更改。 有趣的是,可以使用范圍解析運算符( ::
:)在C ++中解決此問題。
另外值得指出的是,你在呼喚super.myMethod()
在你的實現MySubClass
,它不調用Myabatract
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.