程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

要求子类设置父类的数据成员

发布于2022-08-09 23:32     阅读(1055)     评论(0)     点赞(16)     收藏(1)


这似乎是一个常见的任务,但我有点困惑。假设我有一个带有数据成员和相应 getter/setter 的抽象父类。

public abstract class Parent {

    private MyObj myObj;

    public MyObj getMyObj() { return myObj; }
    public void setMyObj(MyObj myObj) { this.myObj = myObj; }
}

我需要强制子类设置“myObj”变量。我有两个选择:

  1. 使 setter “抽象”(但不是 getter)。这对我来说似乎很奇怪,我以前从未见过。
  2. 完全避免在 parent 中声明数据成员。只有一个父方法,

    抽象的公共 MyObj getMyObj();

然后父对象将始终引用为 getMyObj().getField1()、getMyObj().getField2() 等。每次创建新对象时,而不是将其存储在一个地方。

强制子类设置父类的数据变量的标准方法是什么?它是 getter/setter 之外的新抽象方法吗?


解决方案


要让编译器强制执行该myObj设置,您可以执行以下操作:

public abstract class Parent {

    private final MyObj myObj;

final意味着该值不能更改,但也必须设置。由于您有一个设置器,因此该值可能会更新;如果这是预期的,请不要添加final关键字。

要确保设置了该字段,请添加一个构造函数:

    protected Parent( MyObj initial ) {
        if ( initial == null )
            throw new IllegalArgumentException( "Must provide a value!" );
        this.myObj = initial;
    }


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/473280/016512a5c3e08c82e0c4/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)