Java笔记10

一、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) 匿名内部类和匿名对象不是一回事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值