添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 方法只有声明没有实现时, 该方法就是抽象方法, 需要被 abstract 修饰,
    抽象方法必须定义在抽象类中, 该类必须也被 abstract 修饰
  • 抽象类不可以被实例化. 因为抽象方法没有方法体, 调用抽象方法没有意义
  • 抽象类的子类必须覆盖父类的所有抽象方法后, 该子类才可以实例化
  • 抽象类的细节

  • 抽象类不可以被实例化, 但是有构造函数. 用于给子类对象进行初始化.
  • 抽象类中可以不定义抽象方法, 但是很少见. 目的就是不让该类创建对象. AWT 的适配器对象就是这种类.
    通常这个类的方法有方法体, 但是却没有内容.
  • abstract class Demo
        void show1()
        void show2()
    
  • 抽象关键字不可以和下列关键字共存:
  • private, 抽象类中的方法需要被子类覆盖, 私有之后, 找不到该方法, 无法达到覆盖的目的
  • static, 静态修饰的内容可以直接用类名调用, 但是抽象方法没有方法体, 调用之后, 没有意义
  • final, 被 final 修饰的类不能被继承, 方法不可以被覆盖
  • 抽象类和一般类的异同点:
  • 抽象类和一般类都是用来描述事物的, 都在内部定义了成员
  • 一般类有足够的信息描述事物
    抽象类描述事物的信息有可能不足
  • 一般类中不能定义抽象方法, 只能定义非抽象方法
    抽象类中可定义抽象方法, 同时也可定义非抽象方法
  • 一般类可以被实例化
    抽象类不可以被实例化
  • 类与接口之间是实现关系 (implements), 而且类可以继承一个类的同时实现多个接口
  • 接口与接口之间可以有继承关系, 而且接口可以多继承.
    因为接口没有方法体, 多继承在类中无法实现, 是因为同名方法体在调用时, 产生不确定性.
  • interface CC
        public abstract void show();
    interface MM
        public abstract void method();
    interface QQ extends CC,MM
        public abstract void function();
    class WW implements QQ
        // 需要覆盖 3 个方法
        public void show(){}
        public void method(){}
        public void function(){}
    

    接口的特点

  • 接口是对外暴露的规则
  • 接口是程序的功能扩展
  • 接口的实现降低耦合性
  • 接口可以用来多实现
  • 接口和抽象类的异同点

  • 都是不断向上抽取而来的
  • 抽象类需要被继承, 而且只能单继承
    接口需要被实现, 而且可以多实现
  • 抽象类中可以定义抽象方法和非抽象方法, 子类继承后, 可以直接使用非抽象方法
    接口中只能定义抽象方法, 必须全由子类去实现
  • 抽象类的继承是 is a 关系, 是在定义该体系的基本共性内容
    接口的实现是 like a 关系, 是在定义该体系的额外功能
  • 类与对象的关系

    类与接口的关系

  • JavaSE 基础视频(毕向东)
  •