如何创建实现接口的抽象类对象(JAVA)

时间:2013-09-06 05:50:06

标签: java interface abstract-class

我有一个界面

public interface I{
  Status getStatus();
}

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

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

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

C status = new C();

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

任何帮助都将受到高度赞赏.. !! 感谢名单。

5 个答案:

答案 0 :(得分:4)

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

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

    c  obj1= new test();
   obj1.getStatus();

答案 1 :(得分:4)

根据docs

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)。您无法实例化(创建抽象类的对象)。

请删除abstract关键字或创建另一个扩展抽象类的类。

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

答案 2 :(得分:2)

假设您的班级必须为abstract

您无法实例化abstract class

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

Abstract Methods and Classes

答案 3 :(得分:2)

您无法实例化抽象类

答案 4 :(得分:0)

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