javaSE之面向对象与内部类


继承与实现

继承:有权使用父类成员,可以不重写直接用。

实现:实现一个接口,拥有接口功能,但需实现类自己重写,侧重重写。

 

接口

  1. 语法: 1.7及之前

    1. 公共静态常量:public static final 其中这些可任意省略,默认的。

    2. 公共抽象方法(无方法体):public abstract 可任意省略。

  2. 使用:

    1. 接口不能实例化

    2. 需要通过实现类进行实现 implements

    3. 使用:通过具体的实现类对象调用

      1. 具体实现类:重写所有抽象方法+按需新增

      2. 抽象实现类:按需重写+按需新增。 需要具体的子类继承,重写抽象方法

    4. 接口可多实现,类只能单继承。

    5. 一个类先继承后实现。

    6. 只能类实现接口,多实现关系。

    7. 接口与接口之间,只能继承,不能实现,一个接口可以多继承其他接口

 

内部类(可继承extends,可实现implements)

  1. 成员内部类

  2. 私有内部类

  3. 静态内部类

  4. 局部内部类

  5. 匿名内部类:

    1. 作用:简化实现类|子类,没有自己类本身作用的实现类|

    2. 匿名内部类对象 :实现类|子类+创建对象

      1. 匿名对象:只能在当前位置使用一次

      2. 引用指向匿名内部类对象 接口多态:接口引用调用的为接口中定义的成员

      3. 匿名内部类对象作为方法的实参

    3. new Smoke(){ //实现类类体|抽象类的子类类体 @Override public void smoking() { System.out.println("边吸烟边吐烟圈..."); } }

注意:

  1. 成员内部类中不能定义静态内容,除了静态常量。

  2. 成员内部类中可以直接使用外部类的成员,包括私有

  3. 外部类中可以通过成员内部类的对象调用成员内部类的成员 ,包括私有

  4. 通过外部类对象去创建成员内部类对象,通过成员内部类对象调用成员内部类成员。

 

lambda表达式

  1. 作用:简化匿名内部类对象

  2. 前提:继承或接口(接口中只有一个必须被重写的抽象方法)

  3. 强制检查是否为函数式接口: @FunctionalInterface

  4. 语法:() ->{}

    1. () 接口中抽象方法的参数列表

    2. -> lambda符号

    3. {} 重写方法的方法体

    4.