Java - 抽象问题

时间:2010-11-10 12:19:22

标签: java interface abstract-class

我有这个麻烦。我正在使用一些库,我需要创建一个接口类的istance。

  • 如果我this.createITextArea(),它将创建对象。
  • 如果我做ITextArea area = new ITextArea()我不能,因为这个课是抽象的。

事实上,我需要发送一个功能。但是第一种方法我不能,或者我不知道如何获得该类的变量。我怎么能通过呢?

我需要像area=this.createITextArea()这样的东西,所以我可以在函数中使用变量区域......

希望问题很明确......

4 个答案:

答案 0 :(得分:4)

这有什么问题:

ITextArea area = this.createITextArea();

答案 1 :(得分:3)

尽管问题有点不清楚:

E.g:

ITextArea area = this.createITextArea();
someObj.someMeth(area);

或内联:

someObj.someMeth(this.createITextArea());

我建议进一步阅读Java接口。

答案 2 :(得分:2)

您不需要创建接口的实例。您需要创建一个实现所述接口的类的实例。查找或编写此类实现,将其实例化,然后将其分配给您的变量。

答案 3 :(得分:2)

一个类的实例从不一个接口。方法可以返回接口类型,但是通过该方法获得的“thing”始终是实现此接口的对象。

一些简单的例子来说明它:

public static main(String[] args) {
  List list = createList();
}

public static List createList() {
  return new ArrayList();
}

createList方法返回一个接口类型(List它返回一个真实类的实例(ArrayList)。因此,最后,局部变量list包含对此ArrayList实例的引用。

回到你的例子:假设你有一个界面

public interface ITextArea { /* methods */ }

并且想要创建一个“实现此接口”的对象,然后你需要另一个类,如

public class TextArea implements ITextArea { /* methods */ }

并且您将要创建此具体类的实例。