【发布时间】:2017-05-28 16:18:19
【问题描述】:
是否可以(对于 java 和 SOLID 主体)扩展抽象类以设置超类的属性? 我想要实现的是根据 p1 的值对 p2 应用不同的值,p3 的值也取决于 p2 的值是什么(当您级联下拉菜单时类似)。 这种情况可以用设计模式来处理吗?
public interface Iface{
public void set_p1(int i);
public void set_p2(int i);
public void set_p3(int i);
}
public abstract class A implements Iface{
private int p1;
private int p2;
private int p3;
public void set_p1(int i){
this.p1 = i;
}
public void set_p2(int i){
this.p2 = i;
}
public void set_p3(int i){
this.p3 = i;
}
}
这里我将 p1 设置为 100
public abstract class setOne extends A {
public setOne(){
set_p1(100);
}
}
现在我根据 p1 的值设置 p2
public abstract class setTwo extends setOne {
public setTwo(){
//do some work using p1
set_p2(200);
}
}
现在我实例化我的 setTwo 抽象类
public class TestClass extends setTwo {
public TestClass(){
super();
}
}
TestClass myObj = new TestClass();
现在我希望对象的值如下:
myObj.p1 = 100
和
myObj.p2 = 200;
【问题讨论】:
-
一切都如前所述 myObj.p1 确实是 100,而 myObj.p1 也是 100。我是 java 新手,所以我想看看我所做的是否符合可靠的原则和java中如何使用继承。谢谢。
标签: java inheritance design-patterns solid-principles