多态:指的是同一个方法调用,由于对象不同,可能会有不同的行为。(现实生活中,同一个方法,具体的实现会不一样)
要点:
1.多态是方法的多态,不是属性的多态。(多态与属性无关)。
2.多态的存在有三个必要条件(继承、方法重写、父类引用子类对象)。
3.父类应用指向子类对象后,用改父类引用子类重写的方法,此时多态就出现了。
tips:
#重写是方法名相同,参数个数或类型不同,重写是方法名和函数相同,里面的方法不同#
老师讲解的例子(其中包含转型,向上转型和向下转型):
1 package cn.sxt.oo2; 2 3 /** 4 * 5 * 测试多态 6 * @author xingzhuan 7 * 8 */ 9 public class TestPolym { 10 public static void main(String[] args) { 11 Animal a = new Animal(); 12 animalCry(a); 13 Dog d= new Dog(); 14 animalCry(d); 15 16 Cat c = new Cat(); 17 animalCry(c); 18 19 Animal q = new Cat();//自动向上转型 20 animalCry(q); 21 22 Cat q1 = (Cat)q; //强制向下转型 23 q1.miao(); //q是Animal,q1是Cat 24 25 //Dog d2 = new Dog(); 26 //Cat c2 = (Cat)d2; 27 //c2.shout(); 28 29 } 30 31 static void animalCry(Animal a) { 32 a.shout(); 33 } 34 } 35 36 class Animal{ 37 public void shout() { 38 System.out.println("有动物吗?吱一声!"); 39 } 40 } 41 42 class Dog extends Animal{ 43 public void shout() { 44 System.out.println("吱吱吱!"); 45 } 46 } 47 48 class Cat extends Animal { 49 public void shout() { 50 System.out.println("嘤嘤嘤!"); 51 } 52 public void miao() { 53 System.out.println("喵喵喵"); 54 } 55 }