Java学习笔记#多态

多态:指的是同一个方法调用,由于对象不同,可能会有不同的行为。(现实生活中,同一个方法,具体的实现会不一样)

要点

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 }

猜你喜欢

转载自www.cnblogs.com/xingzhuan/p/10441153.html