How does the “final” keyword in Java work? (I can still modify an object.)

前端 未结 18 2331
醉酒成梦
醉酒成梦 2020-11-22 03:08

In Java we use final keyword with variables to specify its values are not to be changed. But I see that you can change the value in the constructor / methods of

18条回答
  •  别那么骄傲
    2020-11-22 03:41

    The final keyword in java is used to restrict the user. The java final keyword can be used in many context. Final can be:

    1. variable
    2. method
    3. class

    The final keyword can be applied with the variables, a final variable that has no value, is called blank final variable or uninitialized final variable. It can be initialized in the constructor only. The blank final variable can be static also which will be initialized in the static block only.

    Java final variable:

    If you make any variable as final, you cannot change the value of final variable(It will be constant).

    Example of final variable

    There is a final variable speedlimit, we are going to change the value of this variable, but It can't be changed because final variable once assigned a value can never be changed.

    class Bike9{  
        final int speedlimit=90;//final variable  
        void run(){  
            speedlimit=400;  // this will make error
        }  
    
        public static void main(String args[]){  
        Bike9 obj=new  Bike9();  
        obj.run();  
        }  
    }//end of class  
    

    Java final class:

    If you make any class as final, you cannot extend it.

    Example of final class

    final class Bike{}  
    
    class Honda1 extends Bike{    //cannot inherit from final Bike,this will make error
      void run(){
          System.out.println("running safely with 100kmph");
       }  
    
      public static void main(String args[]){  
          Honda1 honda= new Honda();  
          honda.run();  
          }  
      }  
    

    Java final method:

    If you make any method as final, you cannot override it.

    Example of final method (run() in Honda cannot override run() in Bike)

    class Bike{  
      final void run(){System.out.println("running");}  
    }  
    
    class Honda extends Bike{  
       void run(){System.out.println("running safely with 100kmph");}  
    
       public static void main(String args[]){  
       Honda honda= new Honda();  
       honda.run();  
       }  
    }  
    

    shared from: http://www.javatpoint.com/final-keyword

提交回复
热议问题