首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实例化抽象类子类

实例化抽象类子类
EN

Stack Overflow用户
提问于 2013-12-30 08:06:25
回答 3查看 754关注 0票数 0

如何实例化抽象类的子类?它会产生错误--不能访问抽象类类型的封闭实例。不管我怎么交换这些值。我知道我不能使用机动车,因为抽象类不能被实例化.

代码语言:javascript
复制
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");
    }


}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-30 08:34:59

嗨,这里的汽车类是抽象类的内部类。因此,只有在声明为静态的情况下,才能实例化这样的内部类。

让我们改变你的计划:

代码语言:javascript
复制
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类,它可以在“抽象类”中实例化。

为了获得进一步的参考,您可以查看得到“不包含类型的实例.”错误

票数 1
EN

Stack Overflow用户

发布于 2013-12-30 08:28:56

它不会让您实例化它们,因为您已经将它们声明为内部类。在类声明之前使用static,您将能够这样做:

代码语言:javascript
复制
class Outer {

    class Inner {

    }

    static class Nested {

    }
}

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

代码语言:javascript
复制
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.Nested nested = new Outer.Nested();

请参阅嵌套类教程。这就是“不包含实例”信息的意义所在。您是对的,抽象类不能直接实例化,但是Car不是抽象的。

票数 2
EN

Stack Overflow用户

发布于 2013-12-30 08:08:59

删除这个:公共类抽象类{

以及从文件末尾结束的}。

您已经将整个程序包装成一个抽象类。这是错误的:)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20835705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档