Java面向对象------final

版权声明:欢迎转载 https://blog.csdn.net/qq_37875585/article/details/88114461

final

  1. final修饰变量(局部变量,方法参数,实例变量)

    1. 可以初始化一次,以后不能再改变
      	public class Demo01 {			
      		public static void main(String[] args) {
      			/*
      			 * final 修饰的变量
      			 * 1. final 修饰的变量,可以初始化一次,不能再修改
      			 */
      			//在方法中声明的变量是局部变量
      			final int a;
      			a = 8;//初始化赋值
      			System.out.println(a);//8
      			//a = 9;//赋值,final 修饰的变量不能再次赋值
      			final int b = 9;
      			//b = 10;
      			
      			//final修饰的变量arr只能初始化一次不能再修改
      			//arr 是引用变量,值是数组对象的首地址
      			//是指arr的值,也就是地址值初始化以后不能修改了
      			//也就是 arr与数组之间的引用关系不能改变了!
      			//但是数组的内容是可以改变的
      			final int[] arr = {5,6};
      			arr[0] = 9;
      			System.out.println(Arrays.toString(arr));//9,6
      			//arr = new int[8];
      			
      			//方法参数是在参数传递时候初始化的!
      			//如果方法参数是 final 的,则接收参数值以后
      			//不能再修改了。好处是可以保护方法参数,避免被修改
      			test(5,6);
      			
      			Eoo eoo = new Eoo(8);
      			System.out.println(eoo.a);
      			System.out.println(eoo.b);
      			//eoo.a = 9;//不能修改final变量
      		}
      		
      		public static void test(int a, final int b) {
      			a = 9;
      			//b = 0;
      			System.out.println(a+","+b); 
      		}
      	}
      
      	class Eoo {
      		//final 属性
      		//1. 初始化以后不能再修改
      		//2. final 属性必须赋值或者在构造器中初始化,否则编译错误
      		final int a = 5;
      		final int b;
      		public Eoo(int b) {
      			this.b = b;
      		}
      	}
      
  2. final可以修饰方法,表示这个方法不能在子类中重写(不能被子类修改)

    1. 经常为了保护父类中声明的方法,避免被子类意外修改。
      	public class Foo{	
      		public final void test(){ 
      			System.out.println("test()");
      		}
      	}
      
  3. final可以修饰类,表示这个类不能再继承了。不能再有子类了。

    1. 一般用于限制子类,避免类再次被扩展(修改)。String就是final类,String是极其重要的Java API,为了避免String功能被串改,所以定义为final的类型。 java.lang 包中的很多类都是final的类。
      	public final class Foo{	
      		public void test(){
      			System.out.println("test()");
      		}
      	}
      
  4. static final 定义常量

    1. static 一份,final 表示不能再改
    2. 一份且不能再改变的数据,就是Java中的常量。
    3. 软件中一份且不能改变的数据,应该都定义为常量
      
      

猜你喜欢

转载自blog.csdn.net/qq_37875585/article/details/88114461