当我们平衡两个物体时会发生什么?例如;
Person p = new Person();
Student s = new Student();
p=s;
(Person类是Student类的父类。)
当我写p=s
时,为什么我不能从p获得学生的特殊方法? (如同向下倾斜)我的意思是这个陈述的工作机制是什么?
答案 0 :(得分:1)
我假设Person
类是Student
类的父类。否则你的代码就不会编译。
当您致电p=s
时,您正在将Student
类实例的引用存储到p
中,该引用应该包含对Person
对象的引用。
稍后,当您尝试使用p
调用Student类方法时,编译器会引发错误,因为编译器知道p只保存Person
个对象。要调用Student
方法,您应该使用类型转换:
((Student)p).someStudentMethod();