Java中的多态

一、上转型对象

    1、创建子类与父类

    2、上转型对象定义

	        double age =5;
		
		
		Mammal mammal=new Whale();

        形如double age=5这种自动类型转换,由于Whale类是Mammal类的子类,在进行下面一行代码时会通过类自动类型转化的方式使mammal这个变量的值指向Whale创建的对象,此时称子类对象上转型对象;

     3、上转型对象的使用

         调用方法时:

             1、当调用的方法在子类中已经重写时,所调用是已经被重写了的的方法;[这个可以和多态相联系]    

            mammal.move();

                运行结果为:鲸鱼靠鳍游动

         调用属性时:

             1、无论是否被覆盖,调用的均为父类中的属性;

            System.out.println(mammal.weight);

                 运行结果为:1000.0

             1、无法调用子类中定义的新方法和新属性;(会报错)若是想要调用新的方法和属性必须使用上转型特有的下转型转换:即补充上诉代码     //只有上转型对象才可以使用下转型,要不然不可以运行(只能编译成功,但是运行失败[参考编译时类型 和运行时类型)

            Whale whale =(Whale) mammal;
            whale.eat();

                 运行结果:用口吃

二、多态

    1、多态的定义

            Mammal mammal=new Whale();

         如图上转型对象的使用;前面定义的Mammal类变量称作编译时类型,其地址指向Whale对象,这时候whale对象称为运行时类型

         由于上面提到的上转型对象的知识可知:虽然mammal对应的类型是Mammal类型,其重写方法依然对应的是子类,此时称这种状态叫做多态;

    二、多态的应用

        在多态情况下,在多态的前提下,父类中被子类重写的方法没有必要有方法体,这就是接口的基础;

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值