java - 子类使用 getter 和 setter 访问父类(super class)成员是否很常见?

标签 java inheritance

<分区>

请考虑以下情况:

class A{

    private int num = 10;

    public int getNum(){ return num; }

    public void setNum(int num){ this.num = num; }

}


class B extends A{

    private int num;

    public B(){

        num = getNum();

    }

}

在 Java 中,子类可以访问父类(super class)的私有(private)成员,而无需将它们声明为 protected(因为这会将它们暴露给整个包),可以使用父类(super class)' setter和getter 。不仅在子类的构造函数中,而且在任何需要的地方。

这是人用的东西吗?常见的?你见过这个吗?

最佳答案

是的,这是一种常见的方法,特别是为了封装父类(super class)的内部工作。

考虑一个要被子类化的库类。当使实例变量对子类可见时,有人必须更改父类(super class)并可能删除新版本中的字段,这会使该库版本与旧版本不兼容。

这同样适用于您自己的类,但如果您将字段公开给内部子类,则问题可能不会那么大。

但是,使用另一个变量并像上面那样在构造函数中调用 getter 会出现问题,因为您还必须重写 setter 才能获得有关更改的通知,这会增加复杂性和代码,但几乎没有好处。

关于java - 子类使用 getter 和 setter 访问父类(super class)成员是否很常见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23088804/

相关文章:

html - 行高继承

java - HashMap 填充了 String,而其他 HashMap 未填充

java - Apache Camel : What marches messages along?

java - Apache Commons lang : What's difference between SerializationUtils. clone() 和 BeanUtils.cloneBean(),什么时候用哪个

c++ - 硬件 : C++ Error "trying to initialize Abstract base class"

c++ - 从模板类继承

java - 我的元素列表 xpath 的计数为 0

java - document.close() 需要很长时间才能将 pdf 数据写入硬盘

C# 虚拟方法

java - 我可以调用 super 构造函数并在 java 中传递类名吗?