匿名对象以及final关键字
前言
匿名对象是对象的简化形式,是没有名字的对象.(只要是简化形式就有一定局限性)
一、匿名对象应用场景
• 匿名对象使用时需要注意的两种情况
– 当对对象方法仅进行一次调用的时候
– 匿名对象可以作为实际参数进行传递
–注意:匿名对象可以调用成员变量并赋值,但是赋值并没有意义,
比如,这样输出的age属性还是默认值,不是18.因为他们是不同的两个对象
new Student().age = 18;
System.out.println(new Student().age);
new Student();//匿名对象,没有变量引用的对象
二、final关键字
• final: 修饰符,可以用于修饰类、成员方法和成员变量
• final所修饰的类:不能被继承,不能有子类
• final修饰的方法不可以被覆盖。即不能被重写。
• final修饰的变量是一个常量。是不可以修改的,只能被赋值一次。
-
字面值常量:1,2,3
-
自定义常量:被final所修饰的成员变量,一旦初始化则不可改变
-
注意:自定义常量必须初始化,可以选择显式初始化或者构造初始化
*final修饰成员变量,必须初始化,初始化有两种
– 1,显式初始化//final int NUM = 15;
– 2,构造函数初始化//final int NUM;通过构造函数初始化
– 但是不能两个一起初始化
– 一般定义把常量定义成final还需要定义成static的,为什么?定义成public static final int NUM = 15;//全局常量
2.应用以及规范
什么时候将变量修饰成final呢?
– 通常在程序中使用一些不会变化的数据.也就是常见的一些常量值.比如3.14,这个数直接使用是可以的,但并不利于阅读,所以一般情况下,都会被该数据起个容易阅读的名称
– final修饰的常量定义一般都有书写规范,被final修饰的常量名称,所有字母都大写例如:double PI = 3.14;
– 如果由多个单词组成每个单词间用下划线连接
• 局部内部类只能访问被final修饰的局部变量。
3.final和private的区别
区别1
– final修饰的类可以访问
– private不可以被访问(修饰外部类),但可以修饰内部类,在内部类可以被访问(其实把外部类私有化是没有意义的)
区别2
– final修饰的方法不可以被子类重写
– private修饰的方法表面上看是可以被子类重写的,其实不可以,子类是看不到父类的私有方法的
• 区别3
– final修饰的变量只能在显式初始化或者构造函数初始化的时候赋值一次,以后不允许更改
– private修饰的变量,也不允许直接被子类或一个包中的其它类访问或修改,但是它可以通过set和get方法对其改值和取值
总结
final int NUM = 15;
NUM = 20//这样做不可以,final修饰意味着不可以改变