day-09-面向对象-多态,抽象,接口

多态
● 前提:存在继承关系,方法的覆写
● 定义
○ 父类引用指向子类对象
● 发生地点:
○ 发生在赋值的时候
● 多态的特点
○ 1、丢失子类特有属性
○ 2、如果父类有,子类也有,那就不是特有属性或行为了,除了成员方法外(调用子类的方法因为方法的覆写),其他都调用父类的
● 为什么要使用多态:减少代码的编写
● 优点:高内聚,低耦合
● 发生地点(代码中)
● 1、直接写,
● 2、形参实参:形参是父类引用,实参传的是子类对象
● 3、返回值是子类对象,用父类引用接收
● 4、隐式多态,子类对象调用父类的成员方法的时候,此方法内部就是多态的环境。
● instanceof:判断左侧的变量是不是右侧类实例化来的
● 转换异常ClassCastException
● 转型
○ 向上转型:子类转父类,可以自动进行
○ 向下转型:父类转子类,需要进行强制转换,做之前先用instanceof进行判
● 抽象类
○ abstract:关键字
○ 修饰的类:抽象类,用来被继承
■ 抽象类有构造方法,但是不能创建对象。
○ 修饰的方法:抽象的方法,没有方法体,用来被覆写
○ 不能修饰变量
○ 抽象类和抽象方法的联系
■ 1、抽象方法一定在抽象类中
■ 2、抽象类中不一定有抽象方法
○ 子类继承了抽象类,就必须实现该抽象类的所有抽象方法,如果没有实现,那就让他变成抽象类
○ final和abstract不能同时出现
● 接口
○ 关键字:interface
○ implement
○ 定义的变量都是静态常量
○ 定义的方法
■ 静态方法:公共的静态方法
■ 成员方法:默认是公共的抽象方法
■ 不能定义构造方法,不能实例化对象,但可以通过多态来解决(接口名 变量名 = new 实现类 )
○ 接口的实现类必须实现接口内的所有抽象方法,如果没有全部实现,那么该类就必须是抽象类。
○ jdk1.8之后允许出现静态方法和默认方法
○ 静态方法调用:接口名.方法名
○ 默认方法调用:接口的实现类对象.方法名
○ 补充:java类之间是单继承,但是接口是允许多继承的,多个以逗号隔开(不用)
○ 能用父类的不用子类,能用接口的,不用抽象类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值