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