1.final 可以用来修饰的结构: 类,方法,变量
2.final 用来休息一个类,该类不能被其他的类所继承
3.用来修饰方法,表示方法不能被重写
4. 用来修饰变量,此时的变量成为一个常量,
>4.1final 修饰属性: 不能别修改
>4.2 默认初始化属性不能修饰
> 4.3 实例化对象以后, 对象.属性的方式,或者对象.方法调用final属性【不能修饰】
5. final 修饰 局部变量
【修饰一个类不能被其他类所继承】
【修饰方法,不能被重写】
【修饰一个变量不能被修饰,此时为常量】 不能修改常量的值
【final 修饰属性】:
默认初始化【不能被修饰】
显示 初始化可以
代码块中可以
构造器中
【注意】 如果在构造器中赋值,有多个构造器,那么多个构造器都得赋上值
【错误】因为如果有些构造器没有赋上值,实例化对象,比如现在通过下面的 有参 构造器实例化对象时, final 属性 RIGHT就赋不上值,就会标红-----> 即实例化对象时候,属性没赋值
上图的上一张图中的两个构造器都可以分别实例化对象,例如:
错误的方法也可以改进:
通过this(), 比如: 调用这个无参构造器时,去调用另外一个有参构造器.
public FinalTest(){
RIGHT = 2; // 构造器中初始化,然后修饰
}
public FinalTest( int n){
this();
// RIGHT = n; // final 属性 RIGHT就赋不上值
}
这里new了一下,实例化了一个对象,赋对象的引用f1 ,此时java帮我调用了那个有参构造器,并且传入参数3,但是构造器中,并没有操作,只有一个 this();这个this表示当前对象,this 即当前构造器,在当前构造器器中调用无参数构造器
FinalTest f1 = new FinalTest(3);
System.out.println(f1.RIGHT); // 值为2
对象.方法,调用 final中的属性【不可取】
// 准确点 应该是对象产生之后可以调用方法,但是该值已经加载为final了,之后调用方法已经不能改变该值,所以调用方法最后没能成功给down赋上值
final int Down;
public void SetdDown(int down){
this.Down = down;
}