java - 如何返回一个子类独有的变量?
问题描述
我有Person
一个有多个子类的类。所有子类都有相同的变量(name
, address
, phone
),但有一个额外的变量rank
. 我知道如何显示name
,address
但phone
我不知道如何显示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
并显示name
、address
和phone
。
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
?
解决方案
您必须将对象从Person
后面投射到Pupil
:
((Pupil)pupil).rank
如果你不是 100% 确定你的对象实际上是一个 Pupil,你应该添加一个健全性检查:
if(pupil instanceof Pupil) {
System.out.println(…+((Pupil)pupil).rank+…);
}
推荐阅读
- java - Jackson 动态数据反序列化失败,
- java - java.library.path 中没有 rxtxSerial
- cucumber - Cucumber\Rest Assured:如何获取请求规格?
- sparql - 如何在 dbpedia 中获取 owl:sameas
- spring-boot - 在类型 [java.lang.String] 上找不到属性 [id]
- ios - Apple 拒绝了我的应用程序:UIRequiredDeviceCapabilities 键
- apostrophe-cms - 如何将最后三个添加的数据从子页面加载到主页
- android - Android动画成功完成图
- go - Golang http 服务器根据内容类型返回 html 或 json
- ios - 如果总行数未知,如何使用 UITableViewDataSourcePrefetching?