接口是否可以将已经实例化的对象作为属性?

问题描述 投票:0回答:2

我正在创建具有许多实现类的接口,并且它们必须具有一个属性;我想最好是将该属性放在其接口中,而不是编写许多构造函数行,但是属性只能是static final并且需要立即初始化。

public interface Interface{

     static final AttrType attribute = new AttrType( *something* ); 

我有2个问题:此属性是一个类,其构造函数需要其他一些类型参数,而不仅仅是ints,而且也不应在此处初始化它,我需要接口的所有实现类才能在AttrType的同一实例上工作正如我所说,我不会在界面中实例化。

所以,由于我不够熟练,是否可以在接口中执行此操作,或者我应该在每个子类的构造函数中写一行以放入所需的一个AttrType实例?

java interface static final
2个回答
0
投票

Java接口描述了类可以做什么,而不是类是什么。因此,接口仅描述方法。

您可以通过几种方式处理此问题:

使用接口,您可以为变量获取一个getter,这将强制实现类具有该变量。类似于“ public AttrType getAttribute();”

或者,您可以创建一个类(可能是抽象类),该类实现接口并具有变量及其getter和setter。所有子类都将继承此变量和行为。


0
投票

是否有可能在您的通用接口中添加一个通用基类,所有这些类都可以继承?然后,通用基类构造函数可以包含属性实例。您也可以考虑使用抽象类而不是接口。

© www.soinside.com 2019 - 2024. All rights reserved.