[18/12/03] 多态(polymorphism)和对象的转型(casting)

一、多态

    多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同。 比如:同样是调用人的“休息”方法,张三是睡觉,李四是旅游,同样是调用人“吃饭”的方法,中国人用筷子吃饭,英国人用刀叉吃饭,印度人用手吃饭。

【注意】     1. 多态是方法的多态,不是属性的多态(多态与属性无关)。

                   2. 多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。

                   3. 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

代码示例:

 1 class Animal //父类
 2 {
 3     public void shout(){
 4         System.out.println("叫声");
 5     }
 6 }
 7 
 8 class cat extends Animal //条件1、此时体现继承
 9 {
10     public void shout(){ //条件2、此时体现重写
11         System.out.println("喵喵喵喵。。。");
12     }
13 }
14 
15 class dog extends Animal
16 {
17     public void shout(){
18         System.out.println("汪汪汪汪。。。");
19     
20     }
21 }
22 
23 
24 public class Test_1203_01 
25 {
26     public static void main(String[] args) 
27     {
28         animalShout(new dog());
29         animalShout(new cat());
30 
31         
32     }
33 
34     static void animalShout(Animal a){//多态,不管传来什么动物,都会找到合适的方法
35         a.shout();  //条件3、父类引用指向子类对象
36 
37     }
38 
39     /* 如果没有多态,我们这里需要写很多重载的方法。
40      * 每增加一种动物,就需要重载一种动物的喊叫方法。非常麻烦。
41     static void animalShout(Dog d) {
42         d.shout();
43     }
44     static void animalShout(Cat c) {
45         c.shout();
46     }*/
47 }

二、对象的转型

    向上转型: 子类对象转父类。自动转型

    向下转型:父类转子类,需要强制转型 ,必须将引用变量转成真实的子类类型(运行时类型),否则会出现类型转换异常ClassCastException

 

转载于:https://www.cnblogs.com/ID-qingxin/p/10067184.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值