final作为修饰符,可以用来修饰类,方法和变量。
1>.修饰类:
表示该类不能被继承。不能被继承就意味着不能改变里面的代码。对虚拟机的正常运行有重要作用的类通常是final的,比如String, System,Math。另外说一句废话,final类中的方法是不能被覆盖的。
2>.修饰方法:
表示该方法不能被覆盖。例如:
class Animal{
public void eat(){}
public final void sleep(){}
private void run(){}
}
class Dog extends Animal{
//public void run(){}
public void eat(){}
//public void sleep(){} error
}
3>.修饰变量:
1>).表示变量不能够被改变,即为常量。通常final和static连用来声明常量。
public class TestFinal1{
public static void main(String[] args){
B b=new B();
System.out.println(b.num);
b.num=5;
System.out.println(b.index);
// b.index=8; error
}
}
class B{
int num=3;
final static int index=4;
}
2>).final修饰应用类型数据,指引用(地址)不能变,内存里的真正数据不受限制
public class TestFinal1{
public static void main(String[] args){
final B b2=new B(); //final修饰的是引用变量b2
b2.num=8; //而引用指向的对象的内容是可以改变的
//b2=new B(); error
}
}
class B{
int num=3;
final static int index=4;
}
3>).final修饰的实例变量:声明的同时赋值,或者构造方法里赋值,对于同一个变量,两种初始化方法不能同时出现,只能选择一种
class C{
final int count=9;
public C(){
// count=9;
}
}
4 >).final修饰的静态变量: 声明的同时赋值,或者在静态初始化块里赋值,对于同一个变量,两种初始化方法不能同时出现,只能选择一种
class D{
final static int num=20;
static{
//num=21;
}
}

4665

被折叠的 条评论
为什么被折叠?



