* final: 最终的,最后的, 关键字, 用来修饰类,成员变量, 成员方法, 局部变量;
* 修饰之后的内容特点如下:
* 修饰类:
* 被final修饰的类,可以有父类,但是没有子类(太监类)
* 格式: public final class 类名{...}
*
* 修饰成员变量:
* 被final修饰的成员变量,是一个常量,需要在定义的时候赋值,或者是构造代码块,或者构造方法中赋值.
* 格式: final 数据类型 变量名 = 赋值; (只能赋值一次)
*
* 修饰成员方法:
* 被final修饰的成员方法,不能被重写;
* 格式: public final void method(参数){...}
*
* 修饰局部变量:
* 1. 基本数据类型: 表示里面的值不能被改变了(只能赋值一次)
* final 数据类型 变量名 = 赋值;
* 2. 引用数据类型: 表示地址值不能重新指向, 但是内容可以改变;
public class Demo01Final { public static void main(String[] args) { //1. 基本数据类型: 表示里面的值不能被改变了(只能赋值一次) final int a = 10; //a = 20;// 错误; final int b; b = 20; //b = 30;// 错误! //2. 引用数据类型: 表示地址值不能重新指向, 但是内容可以改变; final int[]array = {1,2,3,4}; //array = new int[4]; // 错误! array[1] = 100; final String str = new String("hello"); //str += "world"; // 错误 final Person p = new Person(); //p = new Person();// 错误! p.name = "张三"; System.out.println(MyInterface.NUM);// 10 //MyInterface.NUM = 100;// 错误! } }
* 在java中修饰成员的关键字有四个,他们修饰之后的可见范围如下:
* 大小关系: public > protected > default > private
*
public protected default(默认不写) private * 同包,同类 YES YES YES YES * 同包,不同类 YES YES YES NO * 不同包,子类 YES YES NO NO * 不同包,非子类 YES NO NO NO
*
* 注意点
* 经常使用的两个权限修饰符, public最大权限, private最小权限.