多态之初认识

Perosn父类

 1 package day1_26;
 2 
 3 public class Person {
 4     String name;
 5     int age;
 6     public void eat() {
 7         System.out.println("人,吃东西");
 8     }
 9 
10     public void walk() {
11         System.out.println("人,走路");
12     }
13 }

Man子类

 1 package day1_26;
 2 
 3 public class Man extends Person {
 4     @Override
 5     public void eat() {
 6         System.out.println("男人,多吃肉长肌肉");
 7     }
 8 
 9     @Override
10     public void walk() {
11         System.out.println("男人,霸气走路");
12     }
13     public void earnMoney() {
14         System.out.println("男人赚钱");
15     }
16 }

PersonTest测试类

 1 package day1_26;
 2 
 3 /**
 4  * 多态是父类引用指向子类对象
 5  * 多态是对于方法而言,属性无关
 6  * 编译看左边(左边是父类,编译时看父类有没有这个方法,如果没有报错)
 7  * 运行看右边(右边是子类,运行时如果这个方法子类重写了父类的,
 8  * 那么就调用子类那个重写的方法)
 9  *
10  */
11 
12 public class PersonTest {
13     public static void main(String[] args) {
14         Person p = new Person();
15         p.eat();
16         p.walk();
17         //多态
18         Person p2 = new Man();
19         p2.eat();
20         p2.walk();
21         System.out.println("****************");
22         //编译看左边,即编译时类型Person,没有earnMoney()方法,所以报错
23         //p2.earnMoney();
24         PersonTest pt = new PersonTest();
25         pt.helloPerson(new Man()); //Person p = new Man()
26         pt.helloPerson(new Person());//Person p = new Person()
27 
28         pt.helloObject(new Man()); //Object object = new Man()
29         pt.helloObject(new Person());//Object object = new Person();
30 
31 
32     }
33 
34     //形参是Person对象,那么调用方法时,可以放入Person对象或者其子类的对象
35     public void helloPerson(Person p) {
36         //因为walk方法被重写了,所以调用时,运行的是重写后的那个方法
37         p.walk();
38     }
39 
40     //形参是Object对象,那么调用方法时,可以放入Object对象或者其子类的对象
41     public void helloObject(Object object) {
42         //因为Perosn和Man都没有重写Object对象的方法,
43         // 所以只能调用继承Object的方法,比如toString()。
44         //编译看左边,左边是Object,它没有eat()方法,所以报错
45         //object.eat();
46         System.out.println(object.toString());
47     }
48 
49 
50 }
原文地址:https://www.cnblogs.com/zui-ai-java/p/14340187.html