1

我有一个界面

public interface I{
  Status getStatus();
}

然后我有一个实现该接口的抽象类

public abstract class C implements I{
       public Status getStatus() {
        return status;
    }
}

我想从另一个类访问 getstatus() 方法,我试过了

C status = new C();

但我收到错误“无法实例化类型 C”

任何帮助将不胜感激..!! 谢谢。

4

5 回答 5

4

您不能为抽象类创建对象编写一个扩展抽象类的具体类并使用该类对象来调用该方法

 class test extends c{
      ..........
     }

    c  obj1= new test();
   obj1.getStatus();
于 2013-09-06T05:54:56.030 回答
4

根据文档

A class type should be declared abstract only if the intent is that subclasses
can be created to complete the implementation. If the intent is simply to prevent
instantiation of a class, the proper way to express this is to declare a 
constructor of no arguments, make it private, never invoke it, and declare no
other constructors.

抽象类可以没有抽象方法,但它必须有一个有效的用例(比如从子类调用 super)。您不能实例化(创建抽象类的对象)。

因此,要么删除抽象关键字,要么创建另一个扩展抽象类的类。

Ans 只是为了记录,当抽象类实现接口时,您不需要在抽象类中实现接口方法(尽管如果您的设计要求,您可以这样做)。但是,如果您没有在实现它的抽象类中实现接口方法,则需要在抽象类的第一个具体子类中实现相同的接口方法。此外,如果您确实在抽象类中实现了接口方法,则无需在抽象类的具体子类中再次实现它们。不过,您始终可以覆盖它。

于 2013-09-06T05:56:14.000 回答
2

假设您的班级必须是abstract.

您不能实例化abstract class.

您可以做的是,让任何孩子扩展该类并为此创建对象。

抽象方法和类

于 2013-09-06T05:50:55.707 回答
2

你不能实例化抽象类

于 2013-09-06T05:51:29.920 回答
0

如果您真的在 C 类中抽象方法,那么我建议您简单地使用常规类。您仍然可以扩展该调用。

于 2020-04-04T16:56:06.307 回答