1. 程式人生 > >Java中 每個類在沒有宣告構造方法的前提下,會自動生成一個不帶引數的構造方法

Java中 每個類在沒有宣告構造方法的前提下,會自動生成一個不帶引數的構造方法

每個類在沒有宣告構造方法的前提下,會自動生成一個不帶引數的構造方法,如果類一但宣告有構造方法,就不會產生了.證明如下:

例1:

class person
{
	person(){System.out.println("父類-person");}
	person(int z){}
}
class student extends person
{
//	student(int x ,int y){super(8);}
}

class Rt
{
	public static void main(String[]args)
	{
		student student_dx=new student();//建立student類的物件
	}
}
//輸出結果:父類-person
例2:
class person
{
	person(){System.out.println("父類-person");}
	person(int z){}
}
class student extends person
{
	student(int x ,int y){super(8);}
}

class Rt
{
	public static void main(String[]args)
	{
		student student_dx=new student(3,4);//建立student類的物件
	}
}
//沒有輸出結果

例1說明:student類自動生成student() {super();}(前提是:student類沒有宣告構造方法的前提下) 'super()'是用來呼叫父類的構造方法.

例2中的person()方法沒有被呼叫,說明student類沒有產生student(){super();}方法.這是因為student類已經宣告構造方法,預設的那個不帶引數的構造方法就不產生了.

再舉例:

class person
{
	person(int z){}
}
class student extends person
{

}

class Rt
{
	public static void main(String[]args)
	{
		student student_dx=new student();//建立student類的物件
	}
}
/*報錯:
exercise14.java:8: 找不到符號
符號: 建構函式 person()
位置: 類 person
class student extends person
^
1 錯誤
*/
說明:student類自動產生了一個student(){super();},但是由於person類已經聲明瞭構造方法,預設的那個帶引數的構造方法沒有產生.,所以報錯中提到找不到建構函式person()