一些细节
1. 包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。(否则编译器就会报错)
2. abstract关键字允许人们在类中创建一个或多个没有任何定义的方法——提供了接口部分。而interface关键字则是产生一个完全抽象的类,根本没有提供任何具体实现。(在Java8之后接口提供了默认方法和静态方法)
3. 接口也可以包含域,但是这些域隐式地是static和final的。
4. 接口中的方法默认为public,因为接口就是为了要供实现类去实现,如果不为public则访问权限会大大降低。
5. 恰当的原则应该是优先使用类而不是接口。从类开始,如果接口的必须性变得非常明确,那么就进行重构。
6. 内部类自动拥有对其外围类所有成员的访问权限。
7. 内部类的对象只能在与其外围类的对象相关联的情况下才能被创建。(除非内部类为static)
8. 接口中的任何类都自动地是public 和 static的。
9. 一个内部类被嵌套(嵌套类即为static的内部类)多少层并不重要 —— 它能透明地访问所有它所嵌入外部类的所有成员。
10. 内部类允许继承多个非接口类型(类或抽象类)
.this 和 .new
通过外部类名 + .this 可以生成对外部类的引用:Outer.this
通过外部类对象 + .new 可以创建一个内部类的对象:outer.new Inner()