Java:在创建父类(super class)类型的对象时使用子类的setter

标签 java subclass getter-setter superclass

我有一个父类(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/

相关文章:

java - 如何使用java 8将对象列表映射到给定对象的值映射

java - 如果 ROOT 申请失败,请立即关闭 Jetty

java - Firebase Cloud Messaging 生成新的发件人 ID

java - Struts2 getters和setters,intellij说他们没有被使用

c# - 像 C# 中那样处理 PHP 属性(getter 和 setter)

java - 如何从 SOAP 消息中删除空 header ?

python - 如果父类(super class)自定义了深拷贝,如何定义子类的深拷贝

java - Java会自动调用抽象类的构造函数吗?

java - 用java创建子类

c++ - C++ 中的 Setter 和 getter