final的使用

2019-07-26  本文已影响0人  御都
import java.util.Arrays;
import org.omg.Messaging.SyncScopeHelper;

class Person{
    int age;
    //在声明时给常量成员属性赋值
    final int[] ss=new int[6];
    final int m =2;
    final int n;
    public static final int PERSON_MAX =180;
    public static final int PERSON_Min;
    //在静态代码块中赋值
    static{
        PERSON_Min=0;
    }
    /*{
        //非static属性能在成员代码块中给常量成员属性赋值
                n = 3;
    }*/
    public Person(){
        //非static属性也能在构造方法中给常量成员属性赋值
        n = 3;
    }
    public void change1(){
        age =1;
        //The final field Person.m cannot be assigned
        //m = 3;
    }
    //局部变量用final修饰除了不能再赋值,和一般局部变量作用一样
    public void change2(int n,final int m){
        //1 常量可以先声明,再赋值,且一定要赋值
        final int a; 
        a =1;
        n = m;
        System.out.println("n = "+n);
        System.out.println("m = "+m);
        //m =3;//限制了对传入参数m的修改
        }
    //final决定了ds指向的数组内存地址不变,但是元素可变
    public void change3(final int[] ds){
        ds[0] = 66;
    }
    //final
    public void m1(){
        System.out.println("Person.m1()...");
    }
}
class CarPerson extends Person{
    //Cannot override the final method from Person
    public void m1(){
        System.out.println("CarPerson.m1()...");
    }
}
final class Super{
    
}
//final修饰的类不能被继承
////The type Sub cannot subclass the final class Super
//class Sub extends Super{  
//}
public class TestFinal {
    public static void main(String[] args) {
        Person p1= new Person();
        p1.ss[0]=2;
        p1.ss[0]=3;
        System.out.println(p1.ss[0]);
        int[] ds = {1,2,3,4,5,6};
        System.out.println(Arrays.toString(ds));
        p1.change3(ds);
        System.out.println(Arrays.toString(ds));
        p1.change2(3, 2);
    }
}
上一篇下一篇

猜你喜欢

热点阅读