其他分享
首页 > 其他分享> > 面向对象的特征之三:多态性

面向对象的特征之三:多态性

作者:互联网

/*
* 面向对象特征之三:多态性
*
* 1.理解多态性:可以理解为一个事物的多种形态。
* 2.何为多态性:
* 对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
*
* 3. 多态的使用:虚拟方法调用
* 有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
* 总结:编译,看左边;运行,看右边。
*
* 4.多态性的使用前提: ① 类的继承关系 ② 方法的重写
*
* 5.对象的多态性,只适用于方法,不适用于属性(编译和运行都看左边)
*/

 1 public class PersonTest {
 2     
 3     
 4     public static void main(String[] args) {
 5         
 6         Person p1 = new Person();
 7         p1.eat();
 8         
 9         Man man = new Man();
10         man.eat();
11         man.age = 25;
12         man.earnMoney();
13         
14         //*************************************************
15         System.out.println("*******************");
16         //对象的多态性:父类的引用指向子类的对象
17         Person p2 = new Man();
18 //        Person p3 = new Woman();
19         //多态的使用:当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法 ---虚拟方法调用
20         p2.eat();
21         p2.walk();
22         
23 //        p2.earnMoney();
24         
25         System.out.println(p2.id);//1001
26         
27     }
28 }
 1 //多态性的使用举例一:
 2 public class AnimalTest {
 3     
 4     public static void main(String[] args) {
 5         
 6         AnimalTest test = new AnimalTest();
 7         test.func(new Dog());
 8         
 9         
10         test.func(new Cat());
11     }
12     
13     public void func(Animal animal){//Animal animal = new Dog();
14         animal.eat();
15         animal.shout();
16         
17         if(animal instanceof Dog){
18             Dog d = (Dog)animal;
19             d.watchDoor();
20         }
21     }
22     
23 //    public void func(Dog dog){
24 //        dog.eat();
25 //        dog.shout();
26 //    }
27 //    public void func(Cat cat){
28 //        cat.eat();
29 //        cat.shout();
30 //    }
31 }
32 
33 
34 class Animal{
35     
36     
37     public void eat(){
38         System.out.println("动物:进食");
39     }
40     
41     public void shout(){
42         System.out.println("动物:叫");
43     }
44     
45     
46 }
47 
48 class Dog extends Animal{
49     public void eat(){
50         System.out.println("狗吃骨头");
51     }
52     
53     public void shout(){
54         System.out.println("汪!汪!汪!");
55     }
56     
57     public void watchDoor(){
58         System.out.println("看门");
59     }
60 }
61 class Cat extends Animal{
62     public void eat(){
63         System.out.println("猫吃鱼");
64     }
65     
66     public void shout(){
67         System.out.println("喵!喵!喵!");
68     }
69 }
70 
71 //举例二:
72 
73 class Order{
74     
75     public void method(Object obj){
76         
77     }
78 }
79 
80 //举例三:
81 class Driver{
82     
83     public void doData(Connection conn){//conn = new MySQlConnection(); / conn = new OracleConnection();
84         //规范的步骤去操作数据
85 //        conn.method1();
86 //        conn.method2();
87 //        conn.method3();
88         
89     }
90     
91 }

 

标签:多态性,之三,System,public,面向对象,println,new,void
来源: https://www.cnblogs.com/jelsa/p/15455764.html