面向对象三大特性:封装,继承和多态。
而其中最难理解的就是多态。
下面是个人再看了一些书籍,和一些博主的资料整理:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。(这句话是我理解第三种方法的关键,请仔细阅读理解)
对象的引用型变量是具有多态性的,因为一个引用型变量可以指向不同形式的对象,即:子类对象作为父类对象来使用。
举一个例子,在一个单位中,有职工employee,职工中又有少数是管理者manager,管理者中又有一部分是领导。若小明是管理者manager类的对象,他也可以被看做是employee的对象,即他也可以被看做是一个职工,他同时具备着职工的所有属性。
代码如下:
-
public class testDuoTai {
-
-
public static void main(String[] args) {
-
Employee emp1= new Employee( "小明", 23, 1000); //emp1是Employee的对象
-
System.out.println(emp1.getInfo());
-
-
Employee emp2= new Manager( "小明", 23, 1000, 5000); //注意此处emp2是Manager类的对象
-
System.out.println(emp2.getInfo());
-
}
-
-
}