我有一个父类(super class) Person 和两个子类 Man 和 Woman
在子类Man中,我有一个实例变量age:
public class Man extends Person{
private double age;
public final static double MIN_AGE = 0.0;
public final static double MAX_AGE = 65.0;
//no argument constructor
public Man(){
super();
initAge(); // This randomly selects age
}
/* Setters and getters */
public void setAge (double ageIn)
{
/* Assign a value only if it is within the allowed range */
if (ageIn>= MIN_AGE && ageIn<= MAX_AGE )
{
this.age = ageIn;
}
else if (ageIn< MIN_AGE)
{
this.age = MIN_AGE;
}
else if (ageIn > MAX_AGE)
{
this.age = MAX_AGE;
}
}
public double getAge()
{
return age;
}
}
现在,我的任务是创建一个 Man 对象,并通过显示“age: with getAge”的值来测试 setter 是否有效以及 initAge 是否有效。
我还必须使用以下内容初始化对象:
Person p1 = new Man();
但是,如果以这种方式初始化,我将无法访问 Man 的 setter 和 getter。除了这样做之外还有其他方法吗:
Man p1 = new Man();
谢谢!
最佳答案
将 p1
转换到 Man
:
((Man) p1).setAge(13);
关于Java:在创建父类(super class)类型的对象时使用子类的setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386540/