final关键字的用法

---恢复内容开始---

Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。

 1、修饰类

  当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。

    final类中的成员变量可以根据需要设为final但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

   例如,创建一个类的前提下:

1 final class person{
2   public people(){
3 
4 }  
5 }
6 
7 class man extends people{
8 
9 }

 

  结果会报错,类型man不能成为people的子类;

  2、修饰方法

 

   在使用final时,注意,只有在想明确禁止该方法在子类中被覆盖的情况下才将方法设置为final。final修饰的方法表示此方法

   已经是最后的、最终的含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。此处需要注意的一点是:因为重

   写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能

   直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重

   新定义了新的方法(注:类的private方法会隐式地被指定为final方法。)

   

public class b extends a{
   public static void main(String args[]){
        

}

    public void getName(){

    }

}       

class a {

      private final void getName(){

}  
/*
因为private修饰,子类不能继承此方法,因此,子类中的getName是重新编译的,属于正常;
*/
     
     public final void getName(){

}

     /*
        因为public修饰,子类可以继承,与final矛盾,导致重写了final方法,编译错误。
    
*/  
}        

 

  3、修饰变量

   final修饰变量只能被赋值一次,赋值后不再改变。

    final修饰成员变量,必须初始化方法。

    当函数的参数类型是final时,说明该参数是只读型,不能被更改;

    

 1 class man{
 2 
 3 priavate final int i = 0;
 4 
 5     public man(){
 6         i = 1;
 7        //i等于1报错;
 8         final Object obj =new Object();
 9         obj = new Object();
10       //obj报错;
11 
12 }
13 
14 }        

 

---恢复内容结束---

posted on 2019-03-18 11:05  学弟1  阅读(2509)  评论(0编辑  收藏  举报

导航