首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何创建实现接口( JAVA )的抽象类对象

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

Stack Overflow用户
提问于 2013-09-06 05:50:06
回答 5查看 8.8K关注 0票数 1

我有一个接口

代码语言:javascript
代码运行次数:0
运行
复制
public interface I{
  Status getStatus();
}

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

代码语言:javascript
代码运行次数:0
运行
复制
public abstract class C implements I{
       public Status getStatus() {
        return status;
    }
}

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

代码语言:javascript
代码运行次数:0
运行
复制
C status = new C();

但是我得到错误“不能实例化类型C”

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-06 05:54:56

不能为抽象类创建对象,编写扩展抽象类并使用该类对象调用方法的具体类。

代码语言:javascript
代码运行次数:0
运行
复制
 class test extends c{
      ..........
     }

    c  obj1= new test();
   obj1.getStatus();
票数 4
EN

Stack Overflow用户

发布于 2013-09-06 05:56:14

根据文档

代码语言:javascript
代码运行次数:0
运行
复制
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只是为了记录一下,当一个抽象类实现一个接口时,您不需要在抽象类中实现接口方法(如果您的设计要求这样做的话,您可以这样做)。但是,如果没有在实现抽象类的抽象类中实现接口方法,则需要在抽象类的第一个具体子类中实现相同的方法。另外,如果您确实在抽象类中实现了接口方法,那么就不需要在抽象类的具体子类中再次实现它们。不过,你总可以重写它。

票数 4
EN

Stack Overflow用户

发布于 2013-09-06 05:50:55

假设您的类必须是abstract

不能实例化abstract class

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

抽象方法和类

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

https://stackoverflow.com/questions/18650776

复制
相关文章

相似问题

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