java面向对象19 final关键字的使用

/*

  • final关键字的使用
  • 在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。
  • 1,当用final来修饰一个类时,此类不能被继承,例如:String,System,StringBuffer。
  • 2,当用final来修饰一个方法时,此方法无法被重写,例如Object类中的getClass().
  • 3,当用final来修饰一个变量时,表明此为常量,值无法修改
  • 3.1当final修饰的变量为属性时,可以考虑赋值的位置是显式初始化,代码块中赋值,构造器中赋值。
  • 构造器加载完后对象就会被创建,此时常量必须被赋值,使用对象.方法的方式无法对常量赋值。
  • 如果对象的常量不同,则在构造器中赋值,如果都一样则在代码块赋值或者显式初始化赋值。
  • 3.2挡final修饰的变量为局部变量时,尤其是final修饰形参时,表明形参是常量。一旦赋值后,
  • 只能在方法体内调用此形参,不能修改或重新赋值。
  • 4,final可以和static组合使用;static final 可以修饰属性和方法,表明随着类的加载而加载且不可改变。
  • static final 修饰的属性也叫全局常量,接口中的属性都是被static final修饰的。
    */
package object_chapter2;

public class Object_Final {
    static final int number = 10;
 //   final int up;//常量无法默认初始化,必须赋值
    final int up = 0;
    final int left;
    final int right;
  
    {
    	left = 20;//可以在代码块中对常量赋值;
    }
    
    public Object_Final() {
    	right = 20;//构造器中可以对常量赋值
    }
    
    public Object_Final(int n) {
    	right = n;//所有重载的构造器中都要对常量赋值,避免没有赋值的情况出现
    	
    }
	
	public static void main(String[] args) {
		//number = 20;//final修饰的属性为常量无法修改
		System.out.println(number + 10);//常量只能调用
		final boolean b = true;				
		final double PI = 3.1415;//final可以修饰局部变量
		//System.out.println(PI++);//无法修改
		System.out.println(2 * PI);//可以被调用
		System.out.println(!b);
		final Final f = new Final();
//		f = null;//final修饰的对象无法修改
//		f = new Final();
		System.out.println(f.num);
		f.num = 22;
		System.out.println(f.num);//final修饰的对象属性可以修改
		
	}
	public final void say() {
		System.out.println("Hello");
	}
		
}

final class Final extends Object_Final{
	int num = 11;
//	public void say() {//final修饰的方法无法被子类重写
//		
//	}
	
}

//class FinalA extends Final{//final 修饰的类无法被继承
//	
//}
发布了47 篇原创文章 · 获赞 1 · 访问量 1051

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/104352780