我试图在子类中创建一个构造函数,但我想在不更改超类功能的情况下将其“继承”变量之一更改为更适合该子类的东西(具体来说,我正在尝试更改类型从String
到我在另一个类中制作的Object
的变量)。问题是,我不能直接更改或访问该变量,因为它是超类中的私有变量,并且该变量没有设置方法。
是否有其他方法可以有效地覆盖超类构造函数,以便我可以修改此“继承”变量而无需编辑超类?还是在这种情况下,即使所有其他方法都基本保持不变,我还是不应该从超类继承?
本质上,我想做的是类似的东西:
//This should not be changed
public class Super
{
private SomeArrayObject<String> o;
private String a;
private SomeObject b;
public Super(String a, SomeObject b)
{
this.a = a;
this.b = b;
o = new SomeArrayObject<String>();
}
public void someMethod()
{
//Does something
}
}
public class Sub
{
private SomeArrayObject<ObjectFromOtherClass> o; //Notice the diff?
public Sub(String a, SomeObject b)
{
super(a, b);
o = new SomeArrayObject<ObjectFromAnotherClass> o;
}
}
作为一个简短的说明,超类中没有“默认构造函数”,因此我不能只使用super()
并根据需要填写变量。
答案 0 :(得分:2)
我可以看到你的问题。您不能修改它,因为它是私权吗?并且可以使用| column1 | column2 | column3 |
|---------|---------|---------|
| user1 | ACT1 | ID1 |
| user1 | ACT1 | ID1 |
| user1 | ACT1 | ID1 |
| user1 | ACT1 | ID1 |
| user2 | ACT2 | ID2 |
| user3 | ACT3 | ID3 |
| user3 | ACT3 | ID3 |
| user3 | ACT3 | ID3 |
| user4 | ACT4 | ID4 |
变量,但是在这种情况下,您可以将变量的可见性更改为private
,以便子类可以查看和修改它。
编辑:
要查看新信息,您还需要做一些小的更改,添加一个泛型,并使该变量受保护,从而创建一个新的泛型类:
protected
这将允许从构造函数的子类中更改类型,而无需