基础概念:书中的域、final关键字

1.书中的域(Field)
在一开始对书中描述的-类的域,这一个词表示迷糊,域是什么?
结果查了一下发现,其实是Field,是field那么就好理解了 。
field:可以是一种属性,可以是一个类变量,可以是一个对象变量,可以是一个对象方法变量、可以是一个函数的参数,然后统称为域 。
【基础概念:书中的域、final关键字】所以,比如 int xx之类的都可以称为域
2.final关键字
final顾名思义最终的意思,不过根据它修饰的对象不同,它有不同的作用
2.1:final修饰类
如果final修饰了一个类(class),那么这个类就不会被继承,也就是这个类不能当做父类
2.2:final修饰方法(函数)
如果final修饰一个方法,那么这个方法是无法被重写的(无法覆盖的)
这个是针对子类的,子类如果继承了父类,子类想重写父类中的final修饰的方法,那么是无法重写的
2.3:final修饰域(类变量、属性等)

基础概念:书中的域、final关键字

文章插图
如果final修饰一个域,那么那个域只能被赋值一次,赋值后值不再改变 。
也就是final要求域指向的地址的值不能发生改变 。
修饰类的域(类的属性)时必须初始化,初始化有两种:一种是定义时就直接赋值了,一种是构造器对这个域初始化 。初始化后值就不能再改变 。
当然如果final修饰的是一个类的对象时,对象中的内容还是可以修改的 。实际代码如下:
public class test3{private int year;private String name;public test3() {}public test3(int year, String name) {this.year = year;this.name = name;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "test3{" +"year=" + year +", name='" + name + '\'' +'}';}}
public class myTest1 {public static void main(String[] args) {final test3 test=new test3(2019,"沙丁鱼flat");test.setYear(2020);System.out.println(test);}}