目录
final
修饰对象:
1、局部变量
2、局部变量之引用类型
3、成员变量
权限
内部类
成员内部类
访问
匿名内部类
使用方法:
代表不可修改的内容
类:不可被继承。
方法:不可重写。
变量:不可修改。
只能被赋值一次
两种情况下的判断正误:
final int c = 0; for (int i = 0; i < 10; i++) { c = i; System.out.println(c); } for (int i = 0; i < 10; i++) { final int c = i; System.out.println(c); }第一种写法会报错,而第二种相当于每次循环重新申明一个新变量。
被final修饰后,只能指向一个对象,地址不能更改,但不影响内部成员变量的赋值
public class FinalDemo2 { public static void main(String[] args) { // 创建 User 对象 final User u = new User(); // 创建 另一个 User对象 u = new User(); // 报错,指向了新的对象,地址值改变。 // 调用setName方法 u.setName("张三"); // 可以修改 } }成员变量的初始化。有两种方式。
注意:被final修饰的变量,通常大写。
public class User { final String USERNAME = "张三"; private int age; } public class User { final String USERNAME ; private int age; public User(String username, int age) { this.USERNAME = username; this.age = age; } }一个类定义在另一个类中
定义在类中方法外的类
在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 Car 中包含发动机 类 Engine ,这时, Engine 就可以使用内部类来描述,定义在成员位置。 class Car { //外部类 class Engine { //内部类 } }注:
内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的 .class 文件,但是前面冠以外部类的类名 和 $ 符号 。 比如, Person$Heart.class