這裡主要看類的構造器的情況,默認的,無參數的,有參數的,有不同參數類型的, 有多個參數的等各種情況。
package lession7;
/**
* 老紫竹JAVA基礎培訓(7),構造器的使用.<br>
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class Lession7 {
public static void main(String[] args) {
new class1(); // 使用了系統自動提供的無參數構造器
new class2(); // 使用了手工編寫的無參數構造器
new class3(); // 使用無參數構造器
new class3("java2000.net"); // 使用有參數構造器
// new class4(); // 使用無參數構造器失敗
new class4("java2000.net"); // 調用有參數構造器
new class5(); // 使用無參數構造器
new class5("java2000.net"); // 調用有參數構造器
new class5(1); // 調用有參數的構造器
new class5("java2000.net", 1); // 帶2個參數的構造器
}
}
class class1 {
// 此類沒有寫任何構造器
// 系統會自動提供一個默認的 public 的無參數構造器
}
class class2 {
// 手工編寫的無參數構造器
// 如果只有這個構造器,則和class1沒有任何區別
public class2() {
}
}
class class3 {
// 無參數的構造器
public class3() {
}
// 有參數的構造器
public class3(String name) {
}
}
class class4 {
// 這個類只有一個帶參數的構造器
// 系統不會自動生成無參數的構造器的
public class4(String name) {
}
}
class class5 {
// 無參數構造器
public class5() {
}
// 帶字符串參數的構造器
public class5(String name) {
}
// 帶整形數字參數的構造器
public class5(int age) {
}
// 帶2個參數的構造器
public class5(String name, int age) {
}
}
測試,記得每次測試後恢復現場哦:
1 如果你已經寫了其它的構造器,則默認的無參數構造器就不存在了,嘗試把
// new class4(); // 使用無參數構造器失敗
前面的注釋去掉,看看輸出結果
2 嘗試在一個class4再增加一個字符串為參數的構造器看看
public class4(String address){
}
看看編譯結果。
3 嘗試把 public 的構造器改成 private 的看看編譯結果
4 嘗試把 public 的構造器,改成默認的,也就是沒有修飾符的看看,比如
class4(String name){
}
5 嘗試把類挪到另一個目錄,看看編譯情況
6 把類挪到另外一個目錄,切按照4改成默認的,然後編譯看看
總結:
1 沒有任何構造器的類,系統會自動提供一個無參數的public的構造器
2 如果有了任何的構造器,系統不再提供
3 構造器的參數類型和個數,順序不能完全相同,這個和參數的名字沒關系,只和類 型有關