final :
本意是指 无法改变的! 不想被改变无非出于两种理由。设计和效率!以下针对用到final 的 三种情况 数据,方法 ,类
1 数据 final 修饰基本的数据类型时 必须初始化 否则编译报错。代码 如下 包括包装类。
final int a=0;
final Integer ad;//编译报错
当 final 修饰的对象修饰的数据 是独享的引用的时候 而不是基本的数据类型。那么该对象的引用(String 除外)是不可以改变的。对象本身是可以改变的。
void tets(final TestA a){
a.setRemark("");
a=new TestA();//编译 报错
}
void tetst(TestA a){
a.setRemark("");
a=new TestA();
}
使用 final 修饰方法的原因有两个。第一个原因把方法锁定,以防止集成修改他的含义。处于设计考虑 第二个就是效率问题。内嵌的方法有时候效率 偏高。final和private关键字
类中 所有的private 方法都隐士的指定为 final的 由于无法取用private 方法所以也就无法覆盖它。但是 private 方法添加上隐士的 final字也是可以的 编译器并不报错
private final void testAMethod(){
System.out.println("menthod");
}
private void testAMethod2(){
System.out.println("menthod 2");
}
使用 final 修饰类的时候 意味着 该类不能被继承。 也就是该类的设计用不需要做 任何的变动 或者处于安全考虑的 考虑 你不希望他有子类。参考 String 类
补充 java中除了 static 和final 外其他方法都是后期绑定的