首页 > 解决方案 > 如何返回一个子类独有的变量?

问题描述

我有Person一个有多个子类的类。所有子类都有相同的变量(name, address, phone),但有一个额外的变量rank. 我知道如何显示nameaddressphone我不知道如何显示rank

定义类:

public class Person {
    public String name;
    public String address;
    public String phone;

    public Person(String name, String address, String phone) {
        this.name = name;
        this.address = address;
        this.phone = phone;
    }

    public String toString() {
        return this.getClass().getName() + "\n" + name;
    }
}

用 定义子类rank

public class Pupil extends Person {
    public String rank;
    public Student(String name, String address, String phone, String rank) {
        super(name, social, phone);
    }

}

创建pupil并显示nameaddressphone

public class Test {

public static void main(String[] args) {
Person person = new Person("John", "1 John Deer Rd", "1112223333");
Person pupil = new Pupil("Jane", "2 John Deer Rd", "1112223333", "junior");


System.out.println(pupil.name + "'s phone is " + pupil.phone + " and their address is " + pupil.address + "." + "\n");

}
}

我如何也显示rank

标签: javasubclass

解决方案


您必须将对象从Person后面投射到Pupil

((Pupil)pupil).rank

如果你不是 100% 确定你的对象实际上是一个 Pupil,你应该添加一个健全性检查:

if(pupil instanceof Pupil) {
    System.out.println(…+((Pupil)pupil).rank+…);
}

推荐阅读