Java面向对象:多态,引用数据类型 : 转型,abstract:抽象的,接口

多态:
    一种事物的多种形态|多种表现形式
    行为的多态
    一个行为的不同的实现方式

多态的前提:
    类的继承|接口的实现

多态的最终体现:
    父类的引用指向子类的对象

注意: 如果多态想要有意义,需要配合方法的重写,多态才有意义

多态调用:
    会调用子类中重写的方法

多态的实现效果:
    配合方法的重写,当父类引用指向不同的子类对象,同一个方法具有不同的实现方式-->行为多态
多态调用成员的特点:
    父类引用调用
        成员变量:
            编译运行看父类|左边|类型

        成员方法:
            编译看父类|左边|类型
            运行找子类|右边|对象
注意: 多态是行为的多态
      多态如果不配合方法的重写没有意义
      父类引用对子类新增内容不可见

 例题:

做题四大原则:
 一、继承链:自己没有找父
     A
     |
     B
   /    \
  C      D
 二、 编译看类型、确定方法,运行找对象
 
 三、就近最优原则
 
 四、父类引用对子类新增方法不可见

引用数据类型 : 转型
    类型的大小 : 看继承关系|实现关系
        父类>子类
    向上转型 : 自动类型提升
        Person p = new Student(); --> 多态

        多态调用: 对子类新增内容不可见

    向下转型 : 强制类型转换
        Student s = (Student)p;

        通过s引用调用Student类型所有的内容

ClassCastException 类型转换异常
           引用强转类型的时候,没有转为指向的子类对象类型,转为了其他子类类型,出现的异常

预防出出现类型转换异常->instanceof 运算符

引用 instanceof 类型:
    判断前面的引用是否指向后面类型的对象或者后面类型子类的对象,是->true  不是->false

抽象的abstract
    抽象类: 被abstract修饰的类
    抽象方法: 被abstract修饰的方法
         没有方法体
         存在与抽象类中

开发部门:
    Develop 开发部  work()
    java攻城狮  work(){"服务器端开发"}
    web程序猿   work(){"客户端开发"}


抽象类的特点:
    1.抽象类不能实例化
    2.抽象类可以定义任意内容(属性,功能(抽象的方法,具体的方法))
    3.抽象方法必须要求被重写
    4.抽象类使用: 通过具体子类对象使用
        具体子类: 重写所有的抽象方法 + 按需新增
        抽象子类: 按需重写抽象方法 + 按需新增
    5.一个抽象方法一旦被重写,可以不再被重写,根据需求决定
    6.abstract不能与private,final,static,native 一起使用
    7.抽象类可以实现多态

    接口 :
        接口可以理解为是一个特殊的抽象类
        功能的集合
        引用数据类型
        接口可以帮助定义规范
        解耦-->降低耦合度
        类是单继承,接口多实现的
定义 :
     interface 定义接口

组成:
     jdk7及之前:
         公共的静态的常量
             public static final--> 修饰符可以任意省略
         公共的抽象的方法
             public abstract --> 修饰符可以任意省略

     jdk8及之后:        jdk8中新增:
                1.静态方法 : 可以定义方法体
                   使用: 通过接口名使用

                2.默认方法 : 可以定义方法体
                   显示的被default修饰
                   使用: 通过实现类对象使用

使用:
     1.接口不能实例化
     2.接口需要通过实现类的对象使用
     3.父类需要通过子类继承  extends  -->父类中的成员,子类继承父类有权可以直接使用
       接口需要通过实现类去实现  implements --> 因为接口中几乎都是抽象方法没有方法体,需要实现类自己实现方法体,所有叫做实现
       接口的实现与类的继承很像,都拥有了父类的成员使用权,或者拥有接口中定义的功能,但是一个侧重点在拿过来就用,一个侧重点在拿过来要实现才能用
     4. 接口的使用:
         具体的实现类 : 重写所有的冲向方法 + 按需新增
         抽象的实现类 : 按需重写 + 按需新增
     5.接口可以多实现,类只能单继承
     6.如果一个类同时继承父类实现接口,要求先继承后实现

注意:
    1.父类与接口无法完全相互代替,如果可以建议使用接口,因为接口可以多实现非常灵活
    2.类与类之间只能继承
      类与接口之间,只能是类实现接口
      类与类之间只能单继承
      类与接口之间可以多实现
      接口与接口之间,可以多继承

    3.接口可以实现多态  接口引用指向实现类对象

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值