第九章 接口
第十章 内部类
抽象类和接口
抽象类描述“是不是”——从属 (public) abstract class 单继承
//抽象类
public abstract class Example {
//实例变量
int var1;
//静态变量
static int var2;
//构造方法
public Example(){}
//抽象方法
abstract void method1();
//实例方法
void method2(){}
//静态方法
static void method3(){}
public static void main(String[] args) {
//'Example' is abstract; cannot be instantiated
//Example example = new Example();
}
}
接口描述“有没有”——特征 (public) interface 多重继承
//接口
public interface Example {
//默认static final, 需初始化
int var1 = 0;
//默认abstract
void method1();
//默认方法, 有方法体 -- jdk1.8
default void method2(){}
// 私有方法 -- java 9 【新增】
private void method3(){}
}
内部类
普通内部类
普通内部类对象依赖外部类对象而存在,即在创建一个普通内部类对象时首先需要创建其外部类对象;内部类对象可以访问外部类对象中所有访问权限的字段,同时,外部类对象也可以通过内部类的对象引用来访问内部类中定义的所有访问权限的字段
静态内部类
静态内部类是作为一个外部类的静态成员而存在,创建一个类的静态内部类对象不需要依赖其外部类对象;静态内部类不能访问外部类的非静态成员,而外部类依然可以访问静态内部类对象的所有访问权限的成员
匿名内部类
匿名内部类中可以使用外部类的属性,但是外部类却不能使用匿名内部类中定义的属性
局部内部类
局部内部类里面可以访问外部类对象的所有访问权限的字段,而外部类却不能访问局部内部类中定义的字段