对 private 方法,即使它使用 final 修饰,在子类中也可以定义一个相同的,因为这是子类定义了一个新方法,并非重写。
final 和 abstract 永远不能同时使用;static 和 abstrace 不能同时修饰某个方法;private 和 abstrace 不能同时修饰某个方法。
java 中的 abstract 方法不能有方法体,c++ 中的 pure virtual 函数可以有实现。
interface 的方法只能是 public abstract 的,属性只能是 public static final 的,使用 private 等修饰编译会报错。
从内部类里引用外部类的属性或者方法时,可以用命 OuterClass.this.。
非静态内部类里不能有静态成员。
内部类可以使用 static 修饰,外部类不行。
从外部类外创建内部非静态类的语法:OuterClass.InnerClass varName = OuterInstance.new InnerConstructor();
从外部类外创建内部静态类的语法:OuterClass.InnerClass varName = new OuterClass.InnerConstructor();
内部类不可能被外部类的子类中重写,因为命名空间不同。
纠误一处:《疯狂 Java 讲义》P214 讲道「如果匿名内部类需要访问外部类的局部变量,则必须使用 final 修饰符来修饰外部类的局部变量,否则系统将报错。经验证,只要这个局部变量在后续不改变其值,即使它不以 final 修饰,但实际表现是有效的 final 时,在 Java 8 环境下编译后会自动为它加上 final,不报错。
switch 表达式可以使用整形或者枚举类实例(从 Java 7 开始,可以使用 String 对象了,参考:[Strings in switch Statements](http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html))。