final
final修饰符:
* 最终的意思,不能改变
* final修饰类不可以被继承,但是可以继承其他类。(太监类)
* 使用方式没有变化,可以继承其他的类,也可以实现其他接口,也可以创建对象,调用类中的方法
* 被final修饰的Fu类,子类不能继承
* final修饰的方法,是一个最终方法,不能改变
* final修饰的方法可以被继承,不可以被重写,但父类中没有被final修饰的方法,子类重写后可以加final修饰。
/*
* 可以使用final修饰局变量:称之为常量-->一次赋值,终身不变
* final也是局部变量唯一的修饰符
*/
//final修饰基本数据类型变量
final int a = 100;//固定住变量的值,值不能改变
//a = 20;//The final local variable a cannot be assigned.
/*
* final修饰引用数据类型变量:固定住变量的地址值,地址值不能改变
* 引用数据类型变量赋值赋的值对象的堆内存中的地址值
*/
final Person p = new Person("颜如玉", 18);//0xda6bf4
//p = new Person("黄金屋", 20);//0x222 -->The final local variable p cannot be assigned.
//p = null;//The final local variable p cannot be assigned.
System.out.println(p);//cn.itcast.demo08.Person@da6bf4
/*
* 引用类型变量的属性是可以变化的,不会改变地址值
*/
p.setName("黄金屋");
p.setAge(20);
System.out.println(p);//cn.itcast.demo08.Person@da6bf4
System.out.println(p.getName()+"..."+p.getAge());
* final修饰成员变量:必须在创建对象前赋值(构造方法执行完毕之前)
* 成员变量堆内存中的默认值,不是final修饰的成员变量的值
* 赋值方式:
* 1.直接赋值
* 2.使用构造代码块赋值,优选于构造方法执行
* 3.使用构造方法赋值
* 注意:final修饰的变量,是一个常量,只能赋值一次
//1.直接赋值
final int a = 10;
final int b;
final int c;
//构造代码块
{
//2.使用构造代码块赋值,优选于构造方法执行
b = 20;
}
public Student() {
//3.使用构造方法赋值
c = 30;
}
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
出身决定命运,但努力一定不会错。