目录
接口
接口可以说是一种规则,是对行为的抽象
定义
cs
public interface 接口名 {}
使用
接口和类是实现关系,用implements关键字表示
cs
public class 类名 implements 接口名 {}
接口和类的实现关系,可以单实现,也可以多实现
cs
public class 类名 implements 接口1,接口2 {}
实现类可以在继承一个类时实现多个接口
cs
public class 类名 extends 父类 implements 接口1,接口2 {}
特点
成员变量只能是常量
没有构造方法
JDK7以前,只能定义抽象方法
JDK8:接口中可以定义有方法体的方法(默认,静态)
JDK9:接口可以定义私有方法
注意事项
接口不能实例化
接口的子类(实现类)要么重写接口中所有抽象方法,要么是抽象类
接口和接口是继承关系,可以单继承,也可以多继承。
内部类
在一个类里面,再定义一个类
分类
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
内部类的访问特点
内部类可以直接访问外部类成员,包括私有的
外部类要访问内部类的成员,需要创建对象
成员内部类
写在成员位置的,属于外部类的成员
格式
java
public class 外部类 {
class 内部类{}
}
获取成员内部类对象方式
当成员内部类被private修饰时。在外部类编写方法,对外提供内部类对象
当成员内部类被非私有修饰时,直接创建对象
静态内部类
成员内部类的一种,静态内部类只能访问外部类的静态方法和静态变量,如果要访问非静态的需要创建对象
格式
java
public class 外部类 {
static class 内部类{}
}
局部内部类
将内部类定义在方法里面就叫做局部内部类,类似方法里的局部变量
特点
外界无法直接使用,需要在方法内创建对象并使用
可以直接访问外部类成员,也可以访问方法内的局部变量
匿名内部类
隐藏名字的内部类,可以写在成员位置,也可以写在局部位置
格式
cs
new 类名或接口名(){
重写方法;
};
格式解释
匿名内部类包含了继承或实现,方法重写,创建对象。整体是一个类的子类或者接口的实现类对象
作用
如果实现类只使用一次,就可以使用匿名内部类简化代码