JAVA笔记:多态

一、多态的概述

  多态是继封装、继承之后,面向对象的第三大特性。
  多态是指同一行为,具有多个不同表现形式。
  多态的好处,体现在,可以使程序编写的更简单,并有良好的扩展。

二、多态的格式

父类类型 变量名 = new 子类对象;
变量名.方法名();   

三、 多态的变量调用和方法调用(以“二”中的多态格式为例)

1、变量的调用

  先查看对象变量名的类型(如第二部分中格式中为父类类型)中是否存在该变量,若有则直接调用;若本类没有该变量则向上查找(父类的父类),和子类无关。

2、方法的调用

  先查看对象变量名的类型是否存在该方法,若存在该方法则看该方法是否被创建的子类对象所在类覆盖重写,若已被覆盖重写,则执行子类的方法,否则执行父类的方法;若本类没有该方法,则向上查找。

四、对象的向上转型

  多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。
当父类引用指向一个子类对象时,便是向上转型。
  格式:

    父类类型 变量名 = new 子类类型();
    Animal a = new Cat();        
    (小范围转换到大范围,可以类比于基本类型的转化,如int转化为double)

五、对象的向下转型

1、概述

  向上转型一定是正确的,但是有弊端,因为对象一旦向上转型为父类,则无法调用子类原本特有的内容
  对象的向下转型实际上是还原的动作。

2、格式

    子类类型 变量名 = (子类名称) 父类类型();
    Cat cat = (Cat) a;  
    (其中a为“四”中例子的父类变量名) 此处可看作强制类型转化

3、注意

在本例当中,如果该对象在创建的时候是“猫”类,则向上转型为其父类“动物”类之后,向下转型只能“还原”成为“猫”类。如果原“猫”类对象已被向上转型为“动物”,将此对象向下转型为非“猫”类(如“狗”类),则将会编译报错:ClassCastException(类转换异常)

4、引出问题

向下转型前,如何知道对象原本是“猫”还是“狗”呢?

六、instanceof关键字

  格式:

对象 instanceof 类名称
这将返回一个Boolean值,即判断对象能否作为该类的实例

七、注意事项

  当对象作为某个方法的参数时,若该方法定义的参数类型为此对象的父类类型(或以此对象作为实现类的接口)时,在没有编写向上转型的代码的情况下,编译并不会报错,并且能够正确执行,原因类似于基本类型数据的小范围向大范围的类型自动转换。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值