Java基础4——深入理解final关键字和static关键字以及初始化顺序

本文详细探讨了Java中的final关键字,讲解了它如何修饰类、方法和引用,以及final变量的初始化规则。同时,文章还介绍了static关键字的作用,包括静态变量、静态方法、静态代码块和静态内部类的使用。最后,讨论了类的变量初始化顺序,包括静态和实例变量在有继承情况下的初始化顺序。
摘要由CSDN通过智能技术生成

深入理解final关键字和static关键字以及初始化顺序

final关键字(基础1中提到)

final关键字可以修饰类、方法和引用。
修饰类,该类不能被继承。并且这个类的对象在堆中分配内存后地址不可变。
修饰方法,方法不能被子类重写。
修饰引用,引用无法改变,对于基本类型,无法修改值,对于引用,虽然不能修改地址值,但是可以对指向对象的内部进行修改。

final class Fi {
    
        int a; 
        final int b = 0; 
        Integer s;

}
class Si{
   //空白final
    //一般情况下final修饰的变量一定要被初始化。
    //只有下面这种情况例外,要求该变量必须在构造方法中被初始化。
    //并且不能有空参数的构造方法。
    //这样就可以让每个实例都有一个不同的变量,并且这个变量在每个实例中只会被初始化一次
    //于是这个变量在单个实例里就是常量了。
    final int s ;
    Si(int s) {
   
        this.s = s;
    }
}
class Bi {
   
    final int a = 1;
    final void go() {
   
        //final修饰方法无法被继承
    }
}
class Ci extends Bi {
   
    final int a = 1;
//        void go() {
   
//            //final修饰方法无法被继承
//        }
}
final char[]a = {
   'a'};
final int[]b = {
   1};
--------------------- 
作者:How 2 Play Life 
来源:CSDN 
原文:https://blog.csdn.net/a724888/article/details/80048792 
版权声明:本文为博主原创文章,转载请附上博文链接!

  final修饰方法时,此方法不能被重写,但是注意:因为重写前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同样访问控制权限是private,将会导致子类中不能直接继承此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而在子类中重新定义了新的方法

public class B extends A {
   

    public static void main(String[] args) {
   

    }

    public void getName() {
   
        
    }
}

class A {
   

    /**
     * 因为private修饰,子类中不能继承到此方法,因此,子类中的getName方法是重新定义的、
     * 属于子类本身的方法,编译正常
     */
    private final 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值