Java学习笔记 -关键字final

1.final 是Java语言中的一个关键字
2.final表示最终的,不可变的
3.final修饰的类无法被继承
4.final修饰的方法无法被覆盖
5.final修饰的变量: 只能赋一次值

//final修饰类
final class A{
	
}
class B extends A{
	
}
//final修饰方法
class C{
	public final void doSome(){
		System.out.println("C doSome");
	}
}
class D extends C{
	public void doSome(){
		System.out.println("D doSome");
	}
}
public class Test{
	public static void main(String[] args){
		B b = new B();
		D d = new D();
		d.doSome();
		//final 修饰局部变量
		final int i;
		i = 10;
		final int j = 100;
		j = 300;
	}
}


6.对于引用,final修饰引用指向对象A后,不能再指向对象B,但是对象A内部的数据可以修改
7.final修饰实例变量必须手动赋值(手动赋值的含义:变量后赋值,构造方法赋值)

  • 实例变量如果没有手动赋值的话,系统会赋默认值
  • 且final修饰的变量: 只能赋一次值
  • 所以final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值
  • 显然Java设计者不愿意背这个锅。
  • 手动赋值:在语法上有直接写出、构造方法两种,但是都是在对象创建的时候赋值
class User{
	//final修饰实例变量
	//会报错,没有为age赋值
	//final int age;
	final double height = 1.8;
	final double weight;
	
	//在构造方法中为finalx修饰的实例变量赋值会报错吗?
	public User(){
		weight = 90;
	}
}

复习:实例变量在对象创建的时候赋值。
所以无论是height还是weight都是在一个User对象创建的时候赋初值


8.final修饰实例变量,表示这个变量不会随着对象变化而变化,
所以结论:final修饰的实例变量,一般添加static声明为静态变量以节省内存
终极结论:static final联合声明的变量称为”常量“,常量名建议全部大写,每个单词之间采用下划线连接

class Chinese{
	String id;
	String name;
	static final String COUNTRY = "中国";
}

猜你喜欢

转载自www.cnblogs.com/zy200128/p/12708407.html