java接口是否可以将一个已经实例化的对象作为属性?
我正在创建一个包含许多实现类的接口,它们都必须具有一个属性; 我想把这个属性放在它们的接口中比写很多构造函数行要好,但是属性只能是静态的final,需要立即初始化
public interface Interface{
static final AttrType attribute = new AttrType( *something* );
我有两个问题:这个属性是一个类,它的构造函数需要一些其他类型参数,而不仅仅是int,而且它不应该在这里初始化,我需要接口的所有实现类在同一个AttrType实例上工作,正如我说的,我不会在接口中实例化
所以,由于我不够专业,有没有办法在接口中做到这一点,或者我应该在每个子类的构造函数中写一行代码,放入它们需要的一个AttrType实例中
# 1 楼答案
是否可以添加一个公共基类,以与所有类都可以继承的公共接口配合使用?然后,公共基类构造函数可以包含属性实例。也可以考虑使用抽象类而不是接口。
# 2 楼答案
Java接口描述类可以做什么,而不是类是什么。因此,接口只描述方法
您可以通过以下几种方式处理此问题:
使用接口,可以为变量提供一个getter,这将迫使实现类拥有该变量。类似于“公共属性类型getAttribute();”
或者你可以创建一个类,可能是抽象的,它实现了接口,并且有变量,以及它的getter和setter。所有子类都将继承这个变量和行为