【java】final 关键字

final 表示不可改变的含义

      采用 final 修饰的类不能被继承;

      采用 final 修饰的方法不能被覆盖;

      采用 final 修饰的变量不能被修改;

      final 修饰的变量必须显示初始化;

      如果修饰的引用,那么这个引用只能指向一个对象,也就是说这个引用不能再次赋 值,但被指向的对象是可以修改的;

      构造方法不能被 final 修饰;

      会影响 JAVA 类的初始化:final 定义的静态变量调用时不会执行 java 的类初始化方 法,也就是说不会执行 static 代码块等相关语句,这是由 java 虚拟机规定的。我们 不需要了解的很深,有个概念就可以了。

1、采用 final 修饰的类不能被继承 

public class FinalTest01 { 
 
 public static void main(String[] args) {     

    }  
}

final class A1 {  
    public void test1() { 
           }  
 } 
 
//不能继承 A1,因为 A1 采用 final 修饰了 
class B1 extends A1 {    
    public void test2() {     
    } 
} 
 

2、采用 final 修饰的方法不能被覆盖 

public class FinalTest02 { 
 
 public static void main(String[] args) {     
    
    }  
} 
 
class A1 {    
    public final void test1() {    
    
    }  
} 
 
class B1 extends A1 {    
    //覆盖父类的方法,改变其行为  
    //因为父类的方法是 final 修饰的,所以不能覆盖  
    public void test1() {     
    
    }    
    public void test2() { 
    
    } 
}

3、采用 final 修饰的变量(基本类型)不能被修改 

public class FinalTest03 {    
    private static final long CARD_NO = 878778878787878L;            
    public static void main(String[] args) {   
        //不能进行修改,因为 CARD_NO 采用 final 修改了   
        CARD_NO = 99999999999999L;  
    }  
}  

4、final 修饰的变量必须显示初始化 

public class FinalTest04 {    
    //如果是 final 修饰的变量必须初始化  
    private static final long CARD_NO = 0L;    
    public static void main(String[] args) {   
        int i;   
        //局部变量必须初始化   
        //如果不用可以不初始化   
        System.out.println(i);  
    }  
} 

5、final修饰引用

如果修饰的引用,那么这个引用只能指向一个对象,也就是说这个引用不能再次赋值,但被指向的对象是可以修改的。

public class FinalTest05 {    
    public static void main(String[] args) {   
        Person p1 = new Person();      
        //可以赋值   
        p1.name = "张三";    
        System.out.println(p1.name);      
        final Person p2 = new Person();   
        p2.name = "李四";   
        System.out.println(p2.name);      

        //不能编译通过   
        //p2 采用 final 修饰,主要限制了 p2 指向堆区中的地址不能修改(也就是 p2 只能指 向一个对象)   
        //p2 指向的对象的属性是可以修改的   
        p2 = new Person();        
    }  
} 
 
class Person {    
    String name;  
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值