多态&抽象类&接口

1.多态的概念: 同一个对象 不同时刻展现出不同的形态
2.多态的三要素: 1.必须有继承 / 实现关系 2.必须有方法重写 3.父类引用指向子类对象
3.多态中成员的访问特点:
3.1成员变量 编译看左 运行也看左
3.2成员方法 编译看左 运行看右 ==> 因为有方法重写 会将父类中方法进行覆盖
4.向上转型和向下转型
       向上转型 父类引用指向子类对象 多态 小的类型进行放大
    向下转型 父类引用转为子类对象 Cat cat = (Cat) a  
    注意:向下转型之前必须使用 a instanceof Cat 只有类型相同才能进行转换 否则类型转换异常
5.多态的好处和弊端
  好处:提高了程序的扩展性 方法形参中使用父类型作为参数 传递实参的时候使用子类对象 形成多态
  弊端:不能使用子类特有方法 编译看左
6.抽象类
  为什么要有抽象方法?
  图形类都有求面积的方法 但是图形类无法定义自己求面积的方式 应该定义为抽象方法 让子类必须根据自己情况去重写方法
  1.抽象方法必须使用abstract进行定义
  2.有抽象方法的类 必须声明为抽象类
  3.抽象类的实现类必须重写所有抽象方法 要么就定义为抽象类(无意义)
  4.抽象类创建对象要使用多态的方式 抽象类的多态
  5.抽象类不能直接创建对象 是因为阻止调用抽象方法 无意义
7.抽象类中成员的特点
  1.可以有变量和常量 
  2.有构造方法 用于子类可能使用到父类的属性时 要提前进行初始化
  3.可以有普通方法 继承的好处 提高了代码的复用性
8.接口: 是一种共用的一种规范,符合规范的都可以进行使用
  接口的特点:
    1.接口定义必须使用interface关键字
    2.实现类后缀名必须为 Impl
    3.接口中都是抽象方法
    4.接口不能直接创建对象 要使用接口的多态进行创建
    5.接口与类之间的关系为实现关系(implements)
    6.接口的实现类要么实现接口中所有的抽象方法 要么定义为抽象类
  接口中成员的特点;
    1.接口中的变量默认被 public static final 修饰也就是常量
    2.接口中不能有构造方法
    3.接口中不能定义普通方法
    4.实现类空参构造调用的super() 为所有类的父类Object中的空参构造
9.接口和抽象的不同
    1.成员不同
    抽象类 可以有常量 变量 构造方法 普通方法 抽象方法
    接口 常量 抽象方法
    2.关系不同
    抽象类与类之间是继承关系 只支持单继承
    接口与类之间是实现关系 可以多实现
    接口与接口之间 是继承关系 可以多继承
    3.什么时候使用抽象类 什么时候使用接口?
      基本功能定义在抽象类中  扩展的功能定义在接口中
10.JDK8新增了 默认方法 和 静态方法 JDK9新增了私有方法 但是都不推荐使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值