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