程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 代碼-一個JAVA苦手的關於類的問題

代碼-一個JAVA苦手的關於類的問題

編輯:編程綜合問答
一個JAVA苦手的關於類的問題

public class Animal{
public Animal(){
}
public void cry(){
System.out.print("crying");
}
}
其中為什麼還要再加上public Animal(){ }這一行代碼?

最佳回答:


創建一個子類對象的實例的時候,必先調用父類的無參構造函數(默認構造函數),假如父類有帶參數的構造函數,那麼系統不會給他創建無參數的構造函數,這時,子類在實例化的時候,因為找不到父類的默認構造函數,編譯器會報錯,如果在子類的構造函數中指定使用父類的帶參數的構造函數的時候,或者在父類中加一個無參數的構造函數的時候,就不會報錯了。

我們假設A是B的父類,B是A的子類。
1、如果沒有給A類沒有提供構造函數,則編譯器會自動提供一個默認的構造函數,如果用戶提供了自己的構造函數,則編譯器不提供默認的構造函數。
2、子類B實例化時會自動調用父類的構造函數,所以如果A的默認的無參數的構造函數為private,則編譯器會報錯,而如果A沒有提供默認的無參數的構造函數,而提供其他的構造函數,編譯器同樣報錯,因為找不到A的默認無參數構造函數。所以我們編程中最好給一個默認的構造函數。
3、或者在B的構造函數中顯示的調用父類A的有參構造函數。super(parameter

narcissussuisen
narcissussuisen
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved