java - 从父类继承时如何更改其构造函数的一部分?

标签 java inheritance subclass

我有一些类,我想用它来制作一个对象。但是,该类在其构造函数中设置了一个属性,这使得它对我来说无法使用。我无法编辑此类的代码,因为它存在于非常严格的代码库中。该属性在对象构造后无法更改,因此即使有 setter 方法,它也不起作用(它是 SWT gui 框架的一部分,不能动态更改)。

我的直觉告诉我对其进行子类化并更改我需要更改的内容。应该只需要几行,因为这个类的所有其他方面都将保持不变。但是,由于您需要在子类的构造函数中调用的第一行是 super 方法,这意味着在我可以执行任何操作之前先调用父类的构造函数。

有什么方法可以让我只改变一个小属性就可以从这个类中创建一个对象,而不必创建一个完整的新类来复制/粘贴其所有代码,除了像 8 这样的一个小变化之外?

谢谢!

编辑:因为有人请求代码:

public class Parent {
    private Object important_object = null;
    public Parent() {
        important_object = new Object();
        important_object.important_property = BAD;
    }
}

public class Child extends Parent {
    public Child() {
           // how the heck do I make an instance of this
           // class that has important_property set to GOOD
           // instead of BAD?
    }
}

最佳答案

如果属性是 private,则不会提供 important_objectimportant_property 的 setter,并且您无法使用 Reflection那么就没有办法改变属性了。

关于java - 从父类继承时如何更改其构造函数的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788638/

相关文章:

ios - 子类化 NSInputStream,重写委托(delegate)?

java - Apache Camel 文件分割器示例

java - 将 ARRAY 传递给存储过程时发生死锁

c++ - 空基类构建开销?

java - 将继承参数从父类(super class)更改为子类

Java:监听器子类不会更改父类(super class)按钮

java - Swing 计时器不启动

java - 通过过滤显示或隐藏 HashMap 标记

c++ - dynamic_cast 在三级继承的情况下导致分段冲突

scala - 在 Scala 中子类化而不重复构造函数参数的快捷方式?