1. 程式人生 > >[JAVA · 0基礎]:11.終結者-final

[JAVA · 0基礎]:11.終結者-final

equals font getname post pan 必須 ont ring 能夠

關於finalkeyword的總結,是非常easy學習和掌握的,大致分為用final修飾的符號常量、類、方法、屬性四部分。而這四部分的內容也是我們必須掌握的,非常有用。在項目中常常來利用finalkeyword來幫忙以完畢我們特定的任務。以下就來看看終於的final:

符號常量

用 final 修飾的變量就稱之為終於變量。也稱之為符號常量。

比如:

double PI = 3.14;

===>>> final double PI = 3.14; //符號常量

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d37.a3;
public class finalTest {
	public static void main(String[] args) {
		final double PI = 3.14;
		//PI = 3.1415926;  //符號常量不可中途改變其值。
		SonDemo1  sd = new SonDemo1();
		int re = sd.add(10, 20);
		System.out.println( re );
	}
}
class Person{
	private String name;
	private final boolean sex   ; //終於屬性(僅僅讀屬性)
	
	public Person( String name, boolean sex ) {
		this.name = name;
		this.sex = sex;
	}
}
class DemoA {
	public final int add( int x, int y ){
		return x + y;
	}
}
class SonDemo1 extends DemoA {
}
//class Son extends  String {
//	
//}
final class Father {	
}
//class Son extends Father {
//	
//}</span></span>

用 final 修飾的類,即為終於類。

特性:

它不可有子類。即: 防繼承的。

比如: 專家提供的 String 類就量個終於類。

方法

用 final 修飾的方法。即為終於方法。

特性:

它不可被重寫。即: 防重寫。

屬性

用final修飾的實例變量就是終於屬性,也成為僅僅讀屬性。

特性:

1) 它必須由final修飾。

2) 它一旦賦值。則終身不變。(中途不變)

3) 當聲明終於的實例變量時。若沒有賦值,則在每個構造器中必須對它賦值。

4) 終於的實例變量沒有設定器。

5) 終於的實例變量名稱大寫。

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d38.a1;

public class FinalObjectVarTest {
	public static void main(String[] args) {
		Person p1 = new Person("張靈",false, 18);
		Person p2 = new Person("張靈",false, 18);
		System.out.println( p1 );
		System.out.println( p2 );
		
		System.out.println( p1.equals(p2) );
		
		//p1.SEX = true;
	}
}

class Person {
	//實例變量
	private String name;
	public  final boolean SEX; //約定: true為男, false為女
	private int age;
	
	public Person() {
		int n = (int)(2 * Math.random());
		this.SEX = n == 1 ;
	}
	public Person(String name,int age) {
		this(); 
		this.name = name;
		this.age = age;
	}
	public Person(String name, boolean sex, int age) {
		this.name = name;
		SEX = sex;
		this.age = age;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	//訪問器
	public String getName() {
		return name;
	}
	public boolean isSEX() {
		return SEX;
	}
	public int getAge() {
		return age;
	}
	
	//
	@Override
	public String toString() {
		return "姓名: " + name + " 性別: " + (SEX ? "男":"女") + "  年齡: " + age;
	}
	
	@Override
	public boolean equals(Object obj) {
		Person pp = (Person)obj;
		if( this.name.equals( pp.name ) && this.SEX == pp.SEX && this.age == pp.age ){
			return true;
		}else{
			return false;
		}
	}
}
</span></span>

業務思想

就像英語中的一句諺語:”Each coin has two sides”(每一個硬幣都有兩面),keywordfinal正如那僅僅硬幣。用final來定義符號常量、類、方法、屬性能夠降低我們非常多工作,容錯率也提高了非常多。


[JAVA &#183; 0基礎]:11.終結者-final