有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在创建一个包含许多实现类的接口,它们都必须具有一个属性; 我想把这个属性放在它们的接口中比写很多构造函数行要好,但是属性只能是静态的final,需要立即初始化

public interface Interface{

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

我有两个问题:这个属性是一个类,它的构造函数需要一些其他类型参数,而不仅仅是int,而且它不应该在这里初始化,我需要接口的所有实现类在同一个AttrType实例上工作,正如我说的,我不会在接口中实例化

所以,由于我不够专业,有没有办法在接口中做到这一点,或者我应该在每个子类的构造函数中写一行代码,放入它们需要的一个AttrType实例中


共 (2) 个答案

  1. # 1 楼答案

    是否可以添加一个公共基类,以与所有类都可以继承的公共接口配合使用?然后,公共基类构造函数可以包含属性实例。也可以考虑使用抽象类而不是接口。

  2. # 2 楼答案

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

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

    使用接口,可以为变量提供一个getter,这将迫使实现类拥有该变量。类似于“公共属性类型getAttribute();”

    或者你可以创建一个类,可能是抽象的,它实现了接口,并且有变量,以及它的getter和setter。所有子类都将继承这个变量和行为