如何实例化抽象类的子类?它会产生错误--不能访问抽象类类型的封闭实例。不管我怎么交换这些值。我知道我不能使用机动车,因为抽象类不能被实例化.
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");
}
}
}发布于 2013-12-30 08:34:59
嗨,这里的汽车类是抽象类的内部类。因此,只有在声明为静态的情况下,才能实例化这样的内部类。
让我们改变你的计划:
public class Abstract {
public static void main(String args[]){
Car car1 = new Car();
}
abstract class MotorVehicle
{
int fuel;
int getFuel()
{
return this.fuel;
}
abstract void run();
}
static class Car
{
void run()
{
System.out.print("Wrroooooooom");
}
}
}在这里,我声明为静态的Car类,它可以在“抽象类”中实例化。
为了获得进一步的参考,您可以查看得到“不包含类型的实例.”错误
发布于 2013-12-30 08:28:56
它不会让您实例化它们,因为您已经将它们声明为内部类。在类声明之前使用static,您将能够这样做:
class Outer {
class Inner {
}
static class Nested {
}
}如果嵌套类是内部的(非静态的),则它属于外部类的实例,而不是外部类本身。内部类需要实例化外部类的实例。静态嵌套类不会。
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.Nested nested = new Outer.Nested();请参阅嵌套类教程。这就是“不包含实例”信息的意义所在。您是对的,抽象类不能直接实例化,但是Car不是抽象的。
发布于 2013-12-30 08:08:59
删除这个:公共类抽象类{
以及从文件末尾结束的}。
您已经将整个程序包装成一个抽象类。这是错误的:)。
https://stackoverflow.com/questions/20835705
复制相似问题