- 抽象类和接口
- 抽象类的abstract修饰类名或者方法名,成员变量不可以修饰
- 抽象类用extends,接口用implements
- 抽象类成员变量可以用private等修饰符修饰,abstract成员方法不能用private、static、synchronized、native等修饰;接口成员变量默认是public static final修饰,所有成员方法只能用public、abstract修饰
- 都不能被实例化
- 内部类
- 静态内部类 static class InnerClass{} 静态内部类不可以访问外部类的普通成员,可以访问static成员
- 成员内部类 和外部类绑定在一起 只有外部类实例化后内部类才可以实例化 不可以有static成员
- 局部内部类 代码块的类
- 匿名内部类 不使用关键字class、extends、implements,没有构造方法,必须继承其他类或者实现其他接口,一定在new之后。创建一个 Thread 或者 Runnable 就是匿名内部类的例子 new Thread(){public void run()};
- 获取类名
- 使用反射获得类名
- 本类类名 this.getClass().getName();
- 父类类名 this.getClass().getSupperClass().getNsme();
- 使用super.getClass().getName() 依然是子类类名 getClass() 调用的是Object中的getClass()
- final修饰符
- final成员变量 引用不可变
- final方法 子类不可覆写,但是可以使用
- final参数 在方法内部该参数不可修改
- final类 该类不可继承,但是该类成员变量不是final
- finalize() GC调用被回收对象的finalize()