packagecom.zzfeng.d1_polymorphism;publicclassTest{publicstaticvoidmain(String[] args){// 认识多态:对象多态、行为多态People p =newTeacher();
p.run();//识别技巧:编译看左边(有无run方法),运行看右边(有无run方法)People p1 =newStudent();
p1.run();}}
多态的前提:
有继承/实现关系;存在父类引用子类对象;存在方法重写
多态的一个注意事项
多态是对象、行为的多态,Java中的属性(成员变量)不谈多态(成员变量会一直访问父类的成员变量)
packagecom.zzfeng.d1_polymorphism;publicclassTest{publicstaticvoidmain(String[] args){// 认识多态:对象多态、行为多态People p =newTeacher();
p.run();//识别技巧:编译看左边(有无run方法),运行看右边(有无run方法)System.out.println(p.name);//Java中的属性(成员变量)不谈多态People p1 =newStudent();
p1.run();System.out.println(p1.name);//Java中的属性(成员变量)不谈多态}}
使用多态的好处
在多态的形式下,右边对象时解耦合的,更便于扩展和维护
定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利
示例代码:
packagecom.zzfeng.d2_polymorphism;importcom.zzfeng.d2_polymorphism.Teacher;publicclassTest{publicstaticvoidmain(String[] args){// 理解多态的好处// 好处一:可以实现解耦合,右边对象可以随时切换,后续业务随即改变(可以是new Teacher,也可以是new Student)People p =newStudent();
p.run();// 好处二:可以使用父类类型的变量作为形参,可以接收一切子类对象Student s =newStudent();go(s);Teacher t =newTeacher();go(t);}publicstaticvoidgo(People p){}}