示例抽象类是波纹管。
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
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();
}
}
您无法做到这一点,因为抽象类是摘要。同样,在您的情况下,Driver
和Vehicle
之间没有连接,因此即使您能够编译该代码(您不会(,ClassCastException
也会显示。您必须首先扩展抽象类。