Java-多态

多态

  1. 多态的意义

    1. 同一类型的引用指向不同的对象时,有不同的实现
      -------行为的多态:cut()、step()、getImage()…
    2. 同一对象被造型为不同的类型时,有不同的功能
      -------对象的多态:我、你、水…
  2. 向上造型/自动类型的转换

    1. 超类型的引用指向派生类的对象
    2. 能造型成为的类型有:超类+所实现的接口
    3. 能点出来什么,看引用的类型
  3. 强制类型转换,成功的条件只有如下两种:

    1. 引用所指向的对象,就是该类型
    2. 引用所指向的对象,实现了该接口或继承了该类
  4. 强转时若不满足如上条件,则发生ClassCastException类型转换异常
    建议:在强转之前先通过instanceof来判断引用指向的对象是否是该类型

  5. 多态

    1. 意义:行为的多态(所有抽象方法都是多态的),对象的多态(所有对象都是多态的)

    2. 向上造型、强制类型转换、instanceof

    3. 多态的表现形式:重写

示例:

Aoo o = new Boo();
Boo o1 = (Boo)o; //符合条件一
Inter1 o2 = (Inter1)o; //符合条件二
Coo o3 = (Coo)o; //ClassCastException类型转换异常
if(o instanceof Coo){ //false
  Coo o3 = (Coo)o;
}

System.out.println(o instanceof Boo); //true
System.out.println(o instanceof Inter1); //true
System.out.println(o instanceof Coo); //false

interface Inter1{ }
class Aoo{ }
class Boo extends Aoo implements Inter1{ }
class Coo extends Aoo{ }

示例多态:
cut()就是多态的

人 p1 = new 理发师();
人 p2 = new 外科医生();
人 p3 = new 演员();
p1.cut(); //剪发
p2.cut(); //开刀
p3.cut(); //停止表演

abstract class 人{
  abstract void cut();
}
class 理发师 extends 人{
  void cut(){ 剪发 }
}
class 外科医生 extends 人{
  void cut(){ 开刀 }
}
class 演员 extends 人{
  void cut(){ 停止表演 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值