面向对象的三大特性是继承、多态,封装。实现多态性有三个条件:
1)子类覆盖父类的方法;2)实例化子类;3)将子类当作父类来使用。
可以考虑这样一种情形,学生有研究生(GraduateStudent)和本科生(UnderGraduateStudent)两种,他们都有一个选课(xuanke())的方法,
但是选课的过程与步骤是不一样的.
Class GraduateStudent extends Person {
public xuanke() { //研究生的选课方法
}
}
Class UnderGraduateStudent extends Person {
public xuanke() { //本科生的选课方法
}
}
如果父类Person为:
Class Person{
public xuanke() { //学生的选课方法
}
}
现在假设这样一种情形:有若干个学生来选课,我们可以直接将其转化为其父类。
通过父类调用选课方法,各个子类会执行其实例化时对应子对象的方法而不是父类中的选课方法。
假设 有几个学生对象 s1,s2,s3你不知道他们是研究生还是本科生,
但是你不用对每一个对象都去判断其类型,直接将其转为其父类使用,
这样他们会执行各自子类的定义的方法。