作业
Topic source为什么不能在main()函数中调用ps.getGrade()呢?是因为ps在之前中已经被向上转型了,不能调用其子类PrimaryStudent的getGrade方法,必须向下转型,转为PrimaryStudent实例对象才可以继续使用!
PrimaryStuden
if(ps instanceof PrimaryStudent) {
PrimaryStudent cost = (PrimaryStudent) ps;
}
System.out.println(cost.getGrade());//这个也不成功是什么原因呢
- 1
是七柒呀__
public class Test {
public static void main(String[] args) {
Person p = new Person("小明", 12);
Student s = new Student("小红", 20, 99);
// TODO: 定义PrimaryStudent,从Student继承,新增grade字段:
Student ps = new PrimaryStudent("小军", 9, 100, 5);
PrimaryStudent x = (PrimaryStudent) ps;
System.out.println(x.getGrade());
}
}
class Person {
protected String name;
protected int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
class Student extends Person {
protected int score;
public Student(String name, int age, int score) {
super(name, age);
this.score = score;
}
public int getScore() { return score; }
}
class PrimaryStudent extends Student {
protected int grade;
// TODO
public PrimaryStudent(String name, int age, int score, int grade){
super(name, age, score);
this.grade = grade;
}
public int getGrade(){ return grade; }
}