0
点赞
收藏
分享

微信扫一扫

接口与内部类

sunflower821 2022-03-14 阅读 88
java

接口(一种特殊的抽象类)

是什么

  1. Interface定义接口
  2. 与类很相似 ,同级

类:单继承;接口:多实现 (比较灵活,便于后期维护)

  1. 继承:子类直接可以拿过来用,不需要重写;

   接口:实现类必须先重写,因为(接口)只有功能,无方法体。

  1. 一般只定义方法(功能的集合)

怎么做:

Jdk1.7及之前

  1. 公共的静态常量:public static final  可以任意省略
  2. 公共的抽象方法:public abstract    可以任意省略

使用:

具体实现类:重写所有接口方法+按需新增

抽象实现类 (用abstract修饰):按需重写+按需新增 (需要子类继承 ,重写抽象方法)

  1. 类与接口 :实现关系

接口与接口:继承关系(多继承与多实现)

Jdk1.8之后

多了

  1. 静态方法    通过接口名调用
  2. 默认方法    通过实现对象调用

接口多态:只能调用接口中存在的内容,对实现类的新增内容不可见

内部类

定义在类中的类就叫内部类

  1. 成员内部类

   在外部类成员位置,既有类的特征 ,也符合成员特征,不能定义静态内容(静态常量除外 )

内部类成员方法可以直接调用内部和外部成员;外部类成员方法可以直接调用外部成员,使用内部类成员需要通过创建对象来调用

同名时:块中直接用,内部类this.;外部类:外部类类名.调用

  1. 静态内部类

被static修饰 (非静态 )成员方法可以直接调用自己的成员和外部类的静态成员 ,外部类非静态成员需要对象调用

  1. 私有内部类

  被private修饰,只能在自己的类和外部类中使用

  1. 局部内部类

 定义在外部类方法中,

  1. 匿名内部类:实现+创建一步完成
  1. 只能使用一次

new Smoke(){//重写方法

}

  1. 可以多次调用

Smoke smoke=new Smoke(){//重写方法

}

  1. 可以作为方法实参

Test(new Smoke(){//重写方法

})

Lambda

定义:简化匿名内部类   ()->{}

():用来放参数

{}:用来放方法体

有5种写法:

1.()->{}

2.方法体只有一句时,{}可以省略

3.参数类型 可以省略,只写参数

4.参数只有一个时,()可以省略

5.方法有返回值时,return关键字可以省略

举报

相关推荐

0 条评论