/* final
(1)是一个关键字,可以用于修饰类,成员变量,成员方法。
(2)特点:
它修饰的类不能被继承。
它修饰的成员变量是一个常量。常量要大写
它修饰的成员方法是不能被子类重写的。
*/
class Fu
{
public final int X = 10;
public final void show()
{
System.out.println("这是绝密资源");
}
}
class Zi extends Fu
{
/*
public void show()
{
System.out.println("这是一堆垃圾,给处理了");
}
*/
public void method()
{
//X = 20; 这里编译就不会通过因为final修饰X,所以X不能被改变编译会报: 无法为最终变量X分配值
System.out.println(X);
}
}
class FinalDemo
{
public static void main(String[] args)
{
Zi z = new Zi();
z.show();
z.method();
}
}
到这里我们都可以理解,然而接下来我说的重点来了
class Student
{
private String name;
public Student(){}
public Student(String name)
{
this.name=name;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
}
class FinalDemo
{
public static void main(String[] args)
{
final Student S1=new Student("刘亦菲");
S1.setName("高圆圆");
System.out.println(S1.getName());
// final修饰的引用数据类型,指的是该引用的指向不再发生改变(即该引用的地址值不再发生改变)
// 而对象内部还可以发生改变
}
}
这样最终输出的是高圆圆就把原有的刘亦菲覆盖了,大家懂了吗?
|