Trả lời là không. Biến tham chiếu cFrame sẽ gọi hàm tạo non-arg Test(), không phải hàm tạo mặc định. Trong khi hàm tạo Test() sẽ tìm thêm và gọi hàm tạo non-arg của lớp JFrame (Cha mẹ) và cứ như vậy Mỗi lớp phải có ít nhất một hàm tạo. Nếu không khai báo rõ ràng, trình biên dịch java cung cấp một hàm tạo không tham số, nghĩa là hàm tạo mặc định. Hàm khởi tạo mặc định này gọi hàm tạo non-parameterised của lớp cha của nó Nó khởi tạo biến lớp thành các giá trị mặc định của chúng.
Ví dụ:
Class Base {}
Class Derived extends Base {} // Default constructor of class "Derived" will automatically calls non-arg constructor of class "Base" and intialzes value to the variables
Trong khi nhà xây dựng không arg được xác định bởi chỉ một lập trình viên. Nó cũng có thể intializes các biến. Một điểm nữa để thêm ở đây là lệnh gọi super() được trình biên dịch java thêm tự động, nếu không tìm thấy siêu() trong lớp dẫn xuất.
Ví dụ:
Class Base {
int y;
public Base() {
}
public int getY() {
return y;
}
}
public class Derived extends Base {
private int x;
public Derived() { //super() will be automatically used
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
Derived d = new Derived();
System.out.println("Base x value => " + d.getX());
System.out.println("Base y value => " + d.getY());
Result:
Base x value => 0 // Default value to its primitive datatype(In this case: int)
Base y value => 0
không có nó không gọi constructor mặc định bây giờ không có constructor mặc định –
cũng Vui lòng tham khảo [Java Mặc định Constructor] (http://stackoverflow.com/questions/4488716/java -default-constructor) –
@CodeGeek cảm ơn –