从混凝土类中调用一种抽象类的方法,而无需扩展



示例抽象类是波纹管。

public abstract class Vehicle {
    void maintain(String str) {
      System.out.println(str);
    }
}

示例混凝土类是波纹管。

public class Driver {
    public static void main(String[] args) {
 }
}

现在,我需要在不扩展车辆类的情况下访问维护方法。是否有任何方法可以在不使用静态内容的情况下执行此操作?

不,没有,因为 maintain实例方法。要调用实例方法,您必须有一个实例。您无法创建抽象类的实例。

您可以匿名子类(请参阅本教程(,但是您仍然需要子类。

您可以使用anonymous inner class。我已经使用了您的示例代码,但还定义了Vehicle

中的Antract方法
public class AbstractTest {

    public static void main(String[] args){
        Vehicle v = new Vehicle() {
            @Override
            void myOtherAbstractMethod() {
                // Do what you need here
            }
        };
        v.maintain("foo");
    }
    public static abstract class Vehicle {
        void maintain(String str) {
            System.out.println(str);
        }
        abstract void myOtherAbstractMethod();
    }
}

您无法做到这一点,因为抽象类是摘要。同样,在您的情况下,DriverVehicle之间没有连接,因此即使您能够编译该代码(您不会(,ClassCastException也会显示。您必须首先扩展抽象类。

最新更新