多态

多态

定义:某一类事物的多种存在形态。

  • 例:动物中猫,狗。
  • 猫这个对象对应的类型是猫类型

    • 猫 mao = new 猫();
  • 同时猫也是动物中的一种,也可以把猫成为动物。

    • 动物 d = new 猫();
    • 动物是猫具体事物中抽取出来的父类型
    • 父类引用指向了子类对象。

多态:可以理解为事物存在的多种体现形态

多态的体现

父类的引用指向了自己的子类对象。

父类的引用也可以接收自己的子类对象。

多态的前提

1. 必须是类与类之间有关系。要么继承,要么实现。

2. 通常存在覆盖。

多态的好处

大大的提高了程序的扩展性。

多态的弊端

只能使用父类的引用访问父类中的成员

前期定义的内容不能调用后期的特有功能

多态出现在代码中的特点

提高扩展性,前期定义的代码可以调用后期的内容(父类方法使用出了子类的内容)

转型

Animal animal = new Cat();//类型提升,向上转型
//限制对特有功能的访问

Cat c = (Cat)animal;// 强制将父类的引用,转成子类类型。向下转型
//可继续使用子类中的特有功能

注意:

不可将父类类对象转成子类类型(Animal animal = new Animal();Cat c = (Cat)animal;)
不可将不同类型的子类进行转换。(Animal animal = new Dog();Cat c = (Cat)animal;)
ClassCastException //类型转换异常

多态自始至终都是子类对象在做着变化。

instanceof:判断两个引用类型是否相等。

用于向下转型时 进行判断 类型是否一致

if(animal instanceof Cat//true){
    Cat c = (Cat)animal;
}//判断这个动物是不是猫
animal instanceof Object  //true
animal instanceof animal //true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值