面向对象的特征之三:多态性
作者:互联网
/*
* 面向对象特征之三:多态性
*
* 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