由于接口定义的是一种规范,因此接口中不能包含构造器和初始化定义。
接口里可以包含成员变量(只能是静态常量)、方法(只能是抽象实例方法、类方法、默认方法)、内部类(包括内部接口、枚举)定义。
接口里的成员变量只能是静态常量,接口里的方法只能是抽象方法、类方法、默认方法或私有方法。
// 定义一个Product 接口
interface Product
{
int getProduceTime();
}
// 让Printer类实现Output和Product接口
public class Printer implements Output,Product
注: 实现接口方法时,必须使用public 访问控制修饰符,因为接口里的方法都是public的,而子类(相当于实现类)重写父类方法时访问权限只能更大或者相等,所以实现类实现接口里的方法时只能使用public 访问权限。
充分利用接口可以极好地降低程序各模块之间的耦合,从而提高系统的可扩展性和可维护性。
- 静态内部类可以包含静态成员,也可以包含非静态成员。根据静态成员不能访问非静态成员的规则,静态内部类不能访问外部类的实例成员 ,只能访问外部类的类成员。即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员。
- 静态内部类是外部类的一个静态成员,因此外部类的所有方法、所有初始化块中可以使用静态内部类来定义变量、创建对象等。
- 外部类依然不能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部成员,也可以使用静态内部类对象作为调用者来访问静态内部类的实例成员。