257 次浏览
  • 抽象类
    • 抽象方法
      • 使用abstract修饰方法
      • 没有方法体
      • 不能用private、final、static修饰
      • 只能定义在抽象类或接口中
    • 抽象类
      • 用abstract修饰的类//是对逻辑的归纳,体现一种模板式设计
      • 有构造器,但不能用于创建对象,留给子类创建对象时调用
      • 可以没有抽象方法,可以有普通方法
      • 子类继承一个抽象类,若抽象类里面有抽象方法,必须覆盖或者把子类也声明为抽象类
  • 接口
    • 解释:接口定义一种规范,规定某一批类里,必须提供某些方法,要求这些类必须完全实现接口里所定义的全部抽象方法,从而实现接口中定义的功能。//是对功能的抽象 ,体现一种规范
    • 语法
      [修饰符] interface 接口名 extends 父接口1,父接口2,...{
      (public static final 常量)
      public abstract 抽象方法)// 实现类中的实现方法必须使用public修饰,接口定义的方法一般不写修饰符
      public static 内部类,接口,枚举)
      (默认方法或public static 静态方法)//jdk8以上才允许
      }
    • 成员特点
      • 没有构造器,不能实例化
      • 接口中的默认方法不需要实现类实现
    • 关系
      • 接口与接口之间继承关系:extend,支持多继承
      • 类与接口直接实现关系:implements,可多实现(,分开接口名即可)
        • 一个类实现一个或者多个接口后:必须完全重写接口中定义的全部抽象方法,否则该类应当定义为抽象类。
        • 实现接口方法,必须用public修饰
    • 多继承冲突解决规则
      • 默认方法可以用于创建可选方法和行为的多继承
      • 如一个类使用相同的函数签名从多个地方(比如另一个类和接口)继承了方法,通过三条规则进行判断:
        1. )类或父类中显式声明的方法,优先级高于其他所有默认方法
        2. )子接口优先级更高
        3. )如果以上两则无法判断,继承了多个接口的类必须显示地指定使用哪一个接口中的方法,X.super.m().X是希望调用的m方法所在的父接口。
    • 接口多态声明方式
      //接口名 变量名 = new 该接口的实现类名()
      IWalkable w = new Human();
      ((ISwimable)w).swim();

  • 接口和抽象类

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注