2022-07-25 顾宇佳 学习笔记

多态

多态核心代码:父类型引用指向子类型对象

不管向上或者向下转型的条件:只有存在继承关系才可以转型
第一种多态形式:(向上转型)
  父类 父类对象 = new 子类();
子类型 —> 父类型
向上转型可以自动转换

1.  自动转型,隐式转换,向上转型就是 父类引用指向子类实例 ,也可以说:子类对象可以赋值 父类
2. 向上转型是安全的 ,因为子类都重写了父类方法, 父类引用指向那个子类,就调用该子类重 写方法
3.向上转型,父类引用只能调用子类重写方法,不能调用子类特有的方法,如果想调用,就必 须 向下转型
4.父类的静态方法是不允许子类重写的

第二种多态形式:(向下转型)
  发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型。
父类型 —> 子类型
向下转型需要加强制类型转换符​​​​​​​
1.强制转型 显式转换 ,向下转型就是子类的引用指父类引用,也可以说, 父类强制成子类
就可以调用 子类特有的方法
2. 转型时容易出现异常 ClassCastExcepiton的发生。
3. 防止这种异常的发生,需要用java所提供instanceof (对象比较运算符),给引用变量作类
型的校验
  • 对象名 instanceof 数据类型
  • 如果对象属于该类型,就返回true
  • 如果对象不属于该类型,就返回​​​​​​​​​​​​​​
  • 向下转型后 可以调用子类特有方法,但要先向上转型
    public static void main(String[] args) { 2 //需求是调用蜡笔特有的填色方法
    Pen p=new WaxCrayon(); //向上转型 子转父 自动
    if(p instanceof WaxCrayon){ //防止出现类型转换异常
    WaxCrayon w=(WaxCrayon)p; //向下转型 父转子 强制
    w.color(); } }

何时需要使用向下转型

在多态中,父类型引用子类型对象时,如果需要访问子类特有的属性或方法时,需要向下转型,否则编译无法通过。



多态的形成有3个条件
  1、有继承
  2、有重写
  3、有父类对象指向子类引用
instanceof关键字:判断某一个对象是否是某一个类的实例,返回值是boolean类型
方法的重写:
 重写的方法的返回值可以是被重写方法的返回值的子类。void

匿名对象 

语法:new 类名();
功能:和正常的有名字的对象的功能是相同的。
      依然具备了调用属性,方法的功能。
使用场景:多数是用在传参,实参,多数情况下配合构造器使用
好处:节约资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值