Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—抽象问题_Java_Interface_Abstract Class - Fatal编程技术网

Java—抽象问题

Java—抽象问题,java,interface,abstract-class,Java,Interface,Abstract Class,我有这个麻烦。我正在使用一些库,我需要创建一个类的istance,它是一个接口 如果执行this.createITextArea()操作,它将创建对象 如果我做了ITextArea=newitextarea()我就做不到,因为类是抽象的 事实上,我需要将它发送到一个函数。但对于第一个方法,我不能,或者我不知道如何获取该类的变量。我怎样才能通过呢 我需要一些东西,比如area=this.createITextArea(),这样我就可以在函数中使用变量区域 希望问题清楚…您不需要创建接口实例。您

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

  • 如果执行
    this.createITextArea()
    操作,它将创建对象
  • 如果我做了
    ITextArea=newitextarea()
    我就做不到,因为类是抽象的
事实上,我需要将它发送到一个函数。但对于第一个方法,我不能,或者我不知道如何获取该类的变量。我怎样才能通过呢

我需要一些东西,比如
area=this.createITextArea()
,这样我就可以在函数中使用变量区域


希望问题清楚…

您不需要创建接口实例。您需要创建实现所述接口的类的实例。找到或编写这样的实现,实例化它,然后将其分配给变量。

那么这有什么问题:

ITextArea area = this.createITextArea();

尽管问题有点不清楚:

例如:

或内联:

someObj.someMeth(this.createITextArea());

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

类的实例是从不接口。方法可能返回接口类型,但通过该方法获得的“东西”始终是实现该接口的对象

以下是一些简单的例子:

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 */ }
您需要创建这个具体类的实例

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