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