final
1.类成员可单独声明为final,类不须声明为final
2.类或者方法声明为final,是为了在子类中不会被改变语义
3. 类声明为final,类方法自动为final,类的域不自动转变;
域声明为final,一旦初始化则无法再改变
abstract
1.类方法声明为abstract,类必须声明为abstract
2.某些祖先类只作为派生其他类的基类而不作为可以使用的特定实例类。
3.abstract类无法实例化,但可以创建一个具体子类的对象;
抽象类可以有具体方法和域;
可以没有抽象方法
static
1.内部类成员声明为static,内部类必须声明为static
2.只有在成员位置的内部类可以用static修饰
3.接口中的内部类自动转变为public和static
静态内部类没有对外部类的引用OutClas.this,只能访问外部类的静态成员
外部类访问静态内部类的非静态成员:
new OuterClass.InnerClass().func();
外部类访问静态内部类的静态成员:
OutClass.InnerClass.func();