Java学习(7.15)OOP多态以及接口

1、接口    

    1)是引用数据类型
    2)接口中可以放什么
            静态常量
                默认添加 public static final
                建议变量名都大写,拼接用下划线;接⼝中,存在同名的静态⽅法并不会冲突,原因是只能通过各⾃接⼝名访问静态⽅法。                                                                                                              抽象方法
                默认添加 public abstrac 没有方法体,实现类重写权限必须 public;有多个抽象方法时,有重名的只需重写一次
            静态方法
                属于接口,通过接口名.方法名调用
            默认方法
                default 不可省略,通常用来做接口功能的扩展,既可以调用,也可以重写;                                      有重名的默认方法,必须重写                                                                                                             当⼀个类,既继承⼀个⽗类,⼜实现若⼲个接⼝时,⽗类中的成员⽅法与接⼝中的默认⽅法重 名,⼦类就近选择执⾏⽗类的成员⽅法。                                                                                          私有方法
                普通私有:
                    为了给默认方法中的公共代码提取,实现代码的复用
                静态私有:
                    给静态方法中公共代码提取

    3).接口的使用步骤
        a.接口不能new 对象,需要一个实现类 实现接口
        b.实现类中必须重写接口中所有的抽象方法
        c.通过实现类调用方法

接口和类的关系:
    类 和 类(单继承): 1 v 1  extends 继承
    接口 和 类: 没有此关系
    类 和 接口(多实现): 1 v n implements 实现
    接口 和 接口(多继承): 1 v n  extends 继承

接口作为方法参数和返回值使用的情况:
    1).接口作为方法参数使用:
        可以传所有实现类对象,所以具体使用的都是接口的实现类对象
    2)接口作为返回值类型使用:
        可以返回所有实现类对象,所以具体返回的都是接口的实现类对象
________________________________________________
2、多态
    一种事物,多种形态,称为多态                                                                                                        1.多态出现的前提:1. 继承或者实现【⼆选⼀】                                                                                  2. ⽅法的重写【意义体现:不重写,⽆意义】                                                                                3. ⽗类引⽤指向⼦类对象【格式体现】

    接口的多态:
    InterfaceA a = new InterfaceAImpl(); --> 向上造型
    类的多态:
        Object o = new MyInterfaceAimpl()

2.向上造型:  父类型引用 指向 子类型对象
        接口类型 a = new 接口实现类对象()
        父类型 a = new 子类型()

        当使⽤多态⽅式调⽤⽅法时,⾸先检查⽗类中是否有该⽅法,如果没有,则编译错误;如果有, 执⾏的是⼦类重写后⽅法。
        编译时状态(编译器) = 运行时状态(JVM)
        编译时状态:
            决定了对象能调用那些属性和方法
        运行时状态:
            决定了对象最终能调用那些方法(重写)


3.向下转型(强制类型转换)
    a.有可能出现的问题:
        不知道 引用 到底是什么类型
        ClassCastException - 类型转化异常
    b.解决办法:
        转换之前先判断 引用 实际上是不是要转换的类型对象                                                                      if 引用(a)   instanceof   子类型(Cat)

4.多态出现的好处:类型统一,规范代码,代码的复用性

3、JVM内存:
    方法区: 类相关信息, 类名, 类变量,类方法
    方法栈: 局部变量,临时变量
    堆: 数组/对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值