30/09/2018, 18:56
Constructor trong Java
Xin mọi người chỉ dạy giúp em cái này. Em có đoạn code bên dưới lấy từ một bài học. Xin mọi người cho em hỏi tại sao bên trong public Sup40(){} mặc định là super();?
Em không hiểu super() ở đâu lấy ra mà em chỉ thấy có public Super40(int a).
public class constructor {
public static void main(String[] args) {
// TODO Auto-generated method stub
Sup40 sup = new Sup40();
}
}
class Super40 {
public Super40(int a) {
}
}
class Sup40 extends Super40 {
public Sup40() {
// super(); mac dinh la ham nay
super(3);
}
Tiện thể cho em hỏi sao em ctrl+ k code mà không được nhỉ?
Em xin cảm ơn mọi người!
Bài liên quan
super();
nó sẽ call tới constructor cha, ở đây sẽ gọi tới
public Super40(){
}
Nếu super(3);
thì nó sẽ call tới constructor cha như sau :
public Super40(int value){
// ở đây value của cha khi truyền lên sẽ là = 3
}
Lưu ý : thằng cha phải khai báo các contructor sẵn, ngoại trừ default thì không cần
Nhưng em vẫn không hiểu là code ở trên đâu có đoạn nào tạo ra super(); đâu ạ, vậy mà khi sử dụng mà không báo lỗi. Hay nó là một phương thức trong một thư viện nào đó của java có sẵn và mỗi khi code như trên nó sẽ mặc định suất hiện và call tới cóntructor cha ạ?
super() là mặc định rồi bạn
Tức là nó gọi tới constructor cha mặc định mà không cần phải viết hoặc khai báo ra !
Super40() {
}
Đây là kế thừa, khi em kế thừa từ 1 Class, để gọi hàm contructor của class Cha đó thì sử dụng từ khóa super.
Đặc điểm:
Ngoài ra, để gọi hàm contructor khác của class Con, dùng từ khóa this. Đặc điểm tương tự như super.
constructor của Sup40 không thể gọi
super();
được vì ở class cha là Super40 không có constructor mặc nhiên làpublic Super40(){};
Bởi vì, constructor mặc nhiên chỉ tự động sinh ra bởi compiler nếu class đó chưa có khai báo 1 constructor nào (mà ở đây ta đã khai báo constructor
public Super40(int a) {};
)Constructor mặc nhiên sẽ tự động sinh ra nếu class đó chưa có constructor nào cả (compiler sẽ thay thế ta làm việc này).
Constructor mặc nhiên luôn luôn không có tham số.
Nếu không có lời gọi tường minh đến constructor của class cha tại class con thì compiler sẽ tự động chèn lời gọi tới Constructor mặc nhiên của class cha trước khi thực thi các đoạn code trong Constructor của class con.
Em đã thông. Em xin cảm ơn mọi người đã chỉ dạy ạ