抽象类,接口以及多态

1.抽象类

  • 特点:抽象类和抽象类必须用abstract关键字修饰
    abstract class 类名{}
    public abstract void eat();

          注:抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
    
  • 抽象类的子类:要么是抽象类,要么重写抽象类的所有抽象方法

  • 成员特点:

    • 成员变量:既可以是变量,又可以是常量 ,abstract不能修饰成员变量
    • 也有构造方法 ------>用于子类访问父类数据的初始化。
    • 成员方法:既可以抽象的(强制要求子类做的事情),也可以是非抽象的(子类继承的事情,提高代码复用性)。
  • 面试题1:

    • 一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
      可以
      这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
  • 面试题2

    • abstract不能和哪些关键字共存
    • abstract static
    • abstract final
      二者均不可与abstract组合使用

2.接口类

  • 概述:(有静态常量,没有静态变量)
    • 狭义的角度就是指java中的interface
    • 广义的角度指对外提供规则的都是接口
  • 类实现接口
    • 用implements表示 class 类名 implements 接口名{}
  • 接口子类要重写接口中的所有抽象方法
    • 接口子类既可以是抽象类,还可以是具体类
  • 接口成员特点:
    • 成员变量;只能是常量,并且是静态的并公共的。
      默认修饰符:public static final
  • 类与类,类与接口,接口与接口的关系
    • 类与类:只能单继承,可以多层继承
    • 类与接口: 既可以单实现,还可以多实现; 还可以在继承类的同时实现多个接口
    • 接口与接口:属于继承关系,单继承也可以多继承.

3.多态

  • 概述:事物存在的多种形态
  • 前提:
    • 要有继承关系,
    • 方法重写,
    • 父类引用指向子类对象
  • 非静态成员方法访问特点:
    • 编译看左边(父类),运行看右边(子类)
    • 在运行时,如果子类重写了父类的方法,则调用子类的,如果没有重写,则调用父类的
  • 静态成员方法访问特点:(不存在重写)
    • 编译看左边(父类),运行看左边(父类)。那一个类的引用调用就执行哪一个类的
  • 成员变量访问特点:
    • 编译看左边(父类),运行看右边(子类)
  • 多态的向上转型和向下转型
    • Person p = new SuperMan();向上转型
    • SuperMan sm = (SuperMan)p;向下转型 // HtmlTeacher html =(HtmlTeacher) Teacher;<-----强转<------父类 父类=new 子类()调用子类特有的方法
  • 多态的好处
    • 提高了代码的维护性(继承保证)
    • 提高了代码的扩展性(由多态保证)
  • 多态的弊端
    • 不能使用子类的特有属性和行为。

4.抽象类与接口的区别

  • A:成员区别
    • 抽象类:
      • 成员变量:可以变量,也可以常量
      • 构造方法:有
      • 成员方法:可以抽象,也可以非抽象
    • 接口:
      • 成员变量:只可以常量
      • 成员方法:只可以抽象(仅仅限于JDK1.8之前的版本)
  • B:关系区别
    • 类与类
      • 继承,单继承
    • 类与接口
      • 实现,单实现,多实现
    • 接口与接口
      • 继承,单继承,多继承
  • C:设计理念区别
    • 抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
    • 接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值