Java基础-第六章(面向对象4)

本文详细介绍了Java中的代码块,包括局部代码块、初始化代码块和静态代码块的使用。此外,讲解了final修饰符在类、方法和变量上的作用,并探讨了final类和方法的场景。还详细阐述了基本类型包装类的装箱、拆箱、享元模式及Integer与int的区别。最后讨论了抽象类和模板方法设计模式的应用。
摘要由CSDN通过智能技术生成

一、代码块

(一)*字段不存在多态的特征

通过对象调用字段,在编译时期就已经决定了调用哪一块的内存空间的数据。字段不存在覆盖的概念,在多态时,不能有多态的特征(在运行时期体现子类的特征)。只有方法才有覆盖的概念。

当子类和父类存在相同字段的时候,无论修饰符是什么,都会在各自的内存空间中存储数据。

(二) 什么是代码块

在类或者方法中直接使用“{}”括起来的一段代码,表示一块代码区域。
代码里的变量属于局部变量,只在自己所在的区域(前后的{})内有效。

根据代码块定义的位置不同,我们又分成三种形式:

(三) 局部代码块:直接定义在方法内部的代码块:

一般的情况下,我们不会直接使用局部代码块。会结合if、while、for、try等关键字联合来表示一块代码区域。

(四) 初始化代码块(构造代码块):直接定义在类中:

每次创建对象的时候都会执行初始化代码块:
每次创建对象的时候都会调用构造器,在调用构造器之前,会先执行本类中的初始化代码块(如下代码)。

// 编译前
class CodeBlockDemo{
    {
        System.out.println("初始化代码块");
    }
    CodeBlockDemo(){
        System.out.println("构造器...");
    }
}

// 编译后
class CodeBlockDemo{
    CodeBlockDemo(){
        System.out.println("初始化代码块");
        System.out.println("构造器...");
    }
}

通过反编译之后,我们发现初始化代码块也作为构造器的最初语句。
在平时的开发中,一般不使用初始化代码块。即使要做初始化操作,一般在构造器中做即可。如果需要初始化的代码较多,构造器的结构比较混乱,此时可以专门定义一个方法做初始化操作,再在构造器中调用即可。

(五) 静态代码块:使用static修饰的初始化代码块:

在主方法执行之前执行静态代码块,而且只执行一次。

main方法是程序的入口,为什么静态代码块会优先于mian方法执行?
静态成员随着字节码的加载而加载进JVM,此时main方法还没有被执行,因为方法需要JVM调用。
先把字节码加载进JVM,而后JVM再调用main方法。

静态代码块一般,我们用来做初始化操作,加载资源、加载配置文件等。

二、final修饰符

(一) 理解final

final本省的含义是“最终的,不可改变的”,他可以修饰非抽象类,非抽象方法和变量。注意:构造方法不能使用final修饰,因为构造方法不能被继承,一定是最终的。

(二) final类

final修饰的类:表示最终类,该类不能再有子类。

只要满足以下条件就可以把一个类设计成final类:
① 某类不是专门为继承而设计的。
② 出于安全考虑,类的实现细节不允许改动,不准修改源代码。
③ 确定该类不会再被扩展。

Java里final修饰的类有很多,比如八大基本数据类型包装类和String等。

(三) final方法

final修饰的方法:最终的方法,该方法不能被子类覆盖。

什么时候方法需要final修饰:
① 在父类中提供的统一的算法骨架,不准子类通过方法覆盖来修改,此时使用final修饰(模板方法设计模式)。
② 在构造器中调用的方法(初始化方法),此时一般使用final修饰。

注意: final修饰的方法,子类可以调用,但是不能覆盖。

(四) final变量

final修饰的变量:表示常量,只能被赋值一次,不能再次赋值。

① final变量必须显示的指定初始值,系统不会为final字段初始化。
② final变量一旦赋予初始值,就不能被重新赋值。
③ 常量名规范:常量名符合标识符,单词全部使用大写字母,如果是多个单词组成,单词间使用下划线隔开。

int类型的最大值:final int MAX_VALUE = …;

补充概念:全局静态常量:public static final 修饰的变量,直接使用类名调用即可。

重点:
final修饰基本类型变量:表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值