//static和final修饰符总结
public class TestFinal {
//final修饰的变量必须在定义时就初始化或者在构造器初始化
private static int SIZE;
//如果final修饰对象引用,那么使得引用不变,而不是对象不变,对象本身还是可以修改的
private static final String str="xi";
public TestFinal() {
SIZE=1;
}
public static void main(String[] args) {
String str1=TestFinal.str;
System.out.println(str1);
}
//final方法不可被覆盖,因为private方法不能被继承,所以private方法实际上也是final类型
private final void print(){
//private加上final也不会报错
}
}
final class Person{
}
//不能继承final类,会报错
class Student extends Person{
}
//构造器本质也是static 所以一个类的加载是在类的static成员被访问时开始加载
//java中大部分方法默认动态绑定。只有static和final还有private(就是final)不是动态绑定
//因此静态方法和类相关的,不具备多态性
//接口中的域变量默认是public static final的必须定义的时候就初始化 可以不写修饰符都是默认的 如果写其他的则会报错
//接口中的方法默认是public abstract的 可以不写修饰符 都是默认的
interface Dog{
public final static int i=1;
//不写abstract也可以,因为默认就是abstract的
//实现此方法的方法也必须是public的,因为继承之后不能让修饰符权限下降
public abstract void print();
}