Java笔记10

tech2022-12-29  104

一、final关键字概念与四种用法

final关键字代表最终的、不可改变决定 常见四种用法: 1) 修饰一个类 2) 修饰一个方法 3) 修饰一个局部变量 4) 修饰一个成员变量

1、final关键字用来修饰类

格式:

public final class 类名称{ …… }

含义:当前这个类**不能有任何子类。**其中的所有成员方法都无法进行覆盖重写

2、final关键字用来修饰方法

格式:

修饰符 final 返回值类型 方法名称(参数列表){ 方法体 }

注意事项: 对于类、方法来说,abstract关键字和final关键字不能同时使用

3、final关键字用来修饰局部变量

格式:

final 数据类型 变量名 = 数值;

只能赋值一次,数值无法改变。可以先创建再赋值。 对于基本数据类型,变量数值大小不变 对于引用数据类型,变量地址值不变

4、final关键字用来修饰成员变量

成员变量具有默认值,所以用了final关键字之后必须手动赋值,不会再给默认值。要么使用直接赋值,要么通过构造方法赋值。

必须保证类当中的所有重载的构造方法都会对final修饰的成员变量赋值

二、四种权限修饰符

作用范围public>protected>(default)>private同一个类(自己)✔✔✔✔同一个包(邻居)✔✔✔–不同包子类(儿子)✔✔––不同包非子类(陌生人)✔–––

三、内部类的概念

汽车和发动机、人和心脏

分类: 1、 成员内部类 2、 局部内部类(包括局部内部类)

1、成员内部类

格式:

修饰符 class 外部类名称{ 修饰符 class 内部类名称{ } }

注意: 内用外,随意访问;外用内,需要内部类对象

使用方法: 1) 间接方式:在外部类的方法中,调用内部类的方法,然后再main中只调用外部类的方法 2) 直接方式:外部类名称.内部类名称 对象名 =new 外部类名称().内部类名称()

内部类的同名变量访问

需要访问的变量访问方式局部变量num内部类变量this.num外部类变量outer.this.num

2、局部内部类

如果一个类是定义在一个方法内部的,那么就是一个局部内部类。只有当前所属的方法才能使用

定义格式:

修饰符 class 外部类名称{ 修饰符 返回值类型 外部类方法名称(参数列表){ class 局部内部类名称{ //…… } } }

定义一个类的时候,权限修饰符规则: 1) 外部类:public/(default) 2) 成员内部类:public/protected/(default)/private 3) 局部内部类:什么都不能写

局部内部类的final问题:

如果希望访问所在方法的局部变量,那么这个局部变量必须是有效final的(Java 8+) 原因: 1) new出来的对象在堆内存中 2) 局部变量跟这方法走,在栈内存中 3) 方法运行结束之后立刻出栈,局部变量就会消失 4) new出来的对象在队中持续存在,指导垃圾回收消失

匿名内部类

如果接口的实现类,或者是父类的子类,那么这种情况下就可以省略该类的定义,而改为使用匿名内部类 定义格式:

接口名称 对象名 = new 接口名称(){ //覆盖重写所有抽象方法 }

格式解析: 1) new代表创建对象的动作 2) 接口名称就是出匿名内部类需要实现哪个接口 3) {…} 才是匿名内部类的内容

注意事项:

1) 匿名内部类,在创建对象的时候只能使用唯一一次 2) 匿名内部类和匿名对象不是一回事

最新回复(0)