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 }

 

 

posted on 2021-09-20 18:06  Bytezero!  阅读(103)  评论(0编辑  收藏  举报