【Java入門學習筆記】——第九天 super關鍵字,final關鍵字

1.用super操作被子類隱藏的成員變量和方法

當我們在子類中隱藏了父類的成員變量和方法後,還想操作被隱藏掉的父類的成員變量和方法時:就用到了super關鍵字

子類一旦隱藏了繼承的成員變量,那麼子類創建的對象就不再擁有該變量,該變量歸關鍵字super所擁有

class A{
	int n;
	public int getSum() {
		int sum=0;
		for(int i=1;i<=n;i++) {
			sum+=i;
		}
		return sum;
	}
}
class B extends A{
	int n;
	public int getSum() {
		super.n=n;//操作A類中的n,把B類中的100賦值給A類中的n
		return super.getSum();//操作A類中的方法,計算從1加到100
	}
}
public class Array{
	public static void main(String[] args) {
		B test1=new B();
		test1.n=100;
		int ans=test1.getSum();
		System.out.println(ans);
	}
}

2.用super調用父類的構造方法

要知道:子類並不會繼承父類的構造方法

1.如果子類的構造方法沒有明顯地指明使用父類的哪一個構造方法,子類就調用父類的不帶參數的構造方法

2.子類在其構造方法中需要使用super關鍵字來調用父類的構造方法,而且super必須是子類構造方法的頭一條語句

class Student{
	int age;
	String name;
	Student(){
		
	}
	Student(int age,String name){
		this.age=age;
		this.name=name;
		System.out.println("姓名和年齡爲:"+name+" "+age);
	}
}
class UniversityStudent extends Student{
	boolean marrage;
	UniversityStudent(int age,String name,boolean marrage){
		super(age,name);//調用父類的構造方法
		this.marrage=marrage;
		System.out.println("婚姻狀況:"+marrage);
	}
}

public class Array{
	public static void main(String[] args) {
		UniversityStudent stu=new UniversityStudent(20,"孫澤坤",false);
		
	}
}

這個例子中,super調用的時父類的構造方法Student(int age,String name)

下面我們對這個程序做一點小小的改進

class Student{
	int age;
	String name;
}
class UniversityStudent extends Student{
	boolean marrage;
	UniversityStudent(int age,String name,boolean marrage){
	    //不寫,等同於寫了super();因爲父類沒有構造方法,也算有了一個默認的空構造方法
		this.marrage=marrage;
		System.out.println("婚姻狀況:"+marrage);
	}
}

public class Array{
	public static void main(String[] args) {
		UniversityStudent stu=new UniversityStudent(20,"孫澤坤",false);
		
	}
}

這樣仍然可以編譯運行,這就印證了“如果子類的構造方法沒有明顯地指明使用父類的哪一個構造方法,子類就調用父類的不帶參數的構造方法”

當需要在父類中定義多個構造方法時,應當包含一個不包含參數的構造方法,以防子類省略super時出錯。就像第一個代碼一樣,包含一個不包含參數的的構造方法Student(){}。

3.final關鍵字

final關鍵字可以修飾類、成員變量、和方法中的局部變量。

(1).final關鍵字修飾類:

被final類修飾的類不能有子類,例如Java在java.lang包中提供的String類對於編譯器和解釋器的運行有着重要的作用,Java不允許用戶擴展String類,因此String類被Java修飾爲final類

(2).final修飾方法:

被final修飾的父類中的方法不允許子類重寫,子類只能老老實實繼承父類被final修飾的方法

(3).final修飾變量:

被final修飾的變量(成員變量或者局部變量)稱爲常量,常量在運行期間不允許發生變化,所以聲明常量時,他不會具有默認值0或者是null,所以在聲明常量時必須指定該常量的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章