JAVA中子類是如何繼承父類構造器的?


前言:本文解決的問題

  • 子類如何繼承父類構造器

規則:子類會默認繼承父類的域和方法,也包括構造器。如果子類沒有顯示調用父類構造器,則自動調用父類的無參構造器;此時如果父類沒有默認構造器,則編譯器會報錯。請看下面例子:

class Person{
	private String name;
	int age;
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
}
class Student extends Person{
	private int id;
}

此時編譯器報錯為:
Implicit super constructor Person() is undefined for default constructor. Must define an explicit

解析
由於子類沒有顯示調用父類構造器,則自動調用了父類無參構造器,此時,父類沒有默認的構造器,因此報錯。

更改

class Person{
	private String name;
	int age;
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
}
class Student extends Person{
	private int id;	
	public Student(String name,int age ,int id) {	
		super(name, age);//顯示調用父類構造器
		this.id = id;
	}
}

注意: super()語句必須寫在構造函數中第一條,否則編譯無法通過。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM