Java 多态 解释+案例
1 package com.bytezreo.duotai; 2 /** 3 * 4 * @Description 面向对象的特征三 ------多态性 5 * @author Bytezero·zhenglei! Email:420498246@qq.com 6 * @version 7 * @date 2021年9月20日下午4:56:10 8 * @ 9 * 10 * 11 * 1.理解多态性: 可以理解为一个事物的多态性 12 * 2.何为多态性: 父类的引用指向子类的对象(或子类的对象赋给父类的引用) 13 * 14 * 3.多态的使用:虚拟方法调用 15 * 有了对象的多态性的以后,我们在编译器期,只能调用父类中声明的方法,但是 16 * 在运行期,我们实际执行的是 子类重写父类的方法。 17 * 18 * 总结:编译,看左边,执行看右边 19 * 20 * 4.多态性的使用前提:(1)类的继承关系 (2) 要有方法的重写 21 * 22 * 5.对象的多态性,适用于方法,不适用于属性(属性:编译和运行都只看左边) 23 * 24 * 6.多态性是运行时行为; 25 * 26 * 7.动态绑定 27 */ 28 public class PersonTest 29 { 30 public static void main(String[] args) 31 { 32 Person p1 = new Person(); 33 p1.eat(); 34 35 36 Man man = new Man(); 37 man.eat(); 38 man.age = 25; 39 man.makeMoney(); 40 41 /***********************/ 42 System.out.println("----------------------------"); 43 //对象多态性:父类的引用指向子类的对象 44 Person p2 = new Man(); 45 46 //多态的使用:当调用子父类同名同参的方法时,实际执行的是子类重写父类的 47 //方法---虚拟方法调用 48 p2.eat(); //子类的 49 p2.walk(); 50 51 52 //p2.makeMoney(); 53 54 55 56 57 // Person p3 = new Woman(); 58 59 System.out.println(p2.id); //1001 父类 60 61 62 } 63 }
1 package com.bytezreo.duotai; 2 3 public class Person 4 { 5 String name; 6 int age; 7 8 int id = 1001; 9 10 public void eat() 11 { 12 System.out.println("人,吃饭"); 13 } 14 public void walk() 15 { 16 System.out.println("人,走路"); 17 } 18 19 20 21 22 23 }
package com.bytezreo.duotai; public class Man extends Person { boolean isSmoking; int id = 1002; public void makeMoney() { System.out.println("男人养家家"); } //重写 public void eat() { System.out.println("男人多吃吃饭"); } public void walk() { System.out.println("男人霸气走路"); } }
1 package com.bytezreo.duotai; 2 3 public class Woman extends Person 4 { 5 boolean isBeauty; 6 7 public void goShopping() 8 { 9 System.out.println("女人喜欢购物"); 10 } 11 12 //重写 13 public void eat() 14 { 15 System.out.println("女人吃饭,减肥"); 16 } 17 public void walk() 18 { 19 System.out.println("女人窈窕的走路"); 20 } 21 22 }
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15314836.html