java - 实例化抽象类的子类

标签 java class instantiation abstract

如何实例化抽象类的子类?它给出了错误——没有抽象类类型的封闭实例是可访问的。无论我如何交换值(value)观。我知道我不能使用机动车辆,因为抽象类无法实例化......

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

    Car car1 = new Car();   

}
abstract class MotorVehicle
{

    int fuel;


    int getFuel()
    {
         return this.fuel;
    }


    abstract void run();


}

class Car extends MotorVehicle
{
    void run()
    {

        System.out.print("Wrroooooooom");
    }


}
}

最佳答案

它不会让您实例化它们,因为您已将它们声明为内部类。在类声明之前添加 static,您就可以做到这一点:

class Outer {

    class Inner {

    }

    static class Nested {

    }
}

如果嵌套类是内部(非静态),则它属于外部类的实例,而不是外部类本身。内部类需要外部类的实例才能实例化。静态嵌套类则不然。

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.Nested nested = new Outer.Nested();

参见Nested Classes教程。这就是“无封闭实例”消息的含义。你是对的,抽象类不能直接实例化,但 Car 不是抽象的。

关于java - 实例化抽象类的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835705/

相关文章:

java - 用逗号拆分字符串,但忽略括号或引号中的逗号

java - 如何根据特殊字符将句子拆分为单词

ios - 排序核心数据获取(swift 4)

c++ - 为什么不能将函数内部定义的结构用作 std::for_each 的仿函数?

java - 何时使用参数以及何时使用实例数据?

c++ - 初始化变量和实例化变量有什么区别?

java - URLEncode处理后如何加载图像

java - 为什么 Java 在重载方法时会有这样的行为?

python - Python中定义类变量时如何引用类方法?

c# - 如何传递包含此的类对象并调用该类的方法