2011-11-08 36 views
22

Tôi có một lớp "ChildClass" mở rộng lớp "ParentClass". Thay vì thay thế hoàn toàn hàm khởi tạo cho lớp cha, tôi muốn gọi hàm tạo của lớp cha trước, và sau đó thực hiện thêm một số công việc.Sử dụng hàm tạo mẹ trong lớp con trong Java

Tôi tin rằng theo mặc định hàm tạo 0 đối số của lớp cha được gọi. Đây không phải là những gì tôi muốn. Tôi cần các nhà xây dựng được gọi với một đối số. Điều này có thể không?

tôi đã cố gắng

this = (ChildClass) (new ParentClass(someArgument)); 

nhưng điều đó không làm việc bởi vì bạn không thể sửa đổi "này".

+2

['super'] (http://download.oracle.com/javase/tutorial/java/IandI/super.html) trong Java. – birryree

+0

Kiểm tra điều này cho một giải pháp: http://leepoint.net/notes-java/oop/constructors/constructor-super-example.html – Raihan

Trả lời

48

Bạn có thể tham khảo hàm tạo của cha mẹ bằng "siêu", từ bên trong hàm tạo của con.

public class Child extends Parent { 
    public Child(int someArg) { 
     super(someArg); 
     // other stuff 
    } 
    // .... 
} 
+2

Aha, cảm ơn. Tôi thực sự nên đọc cuốn sách lập trình Java mà tôi đã đặt xung quanh, nó sẽ ngăn cản tôi hỏi những câu hỏi ngu ngốc như thế này. –

+6

Cuộc gọi đến hàm tạo của cha với super() cần phải là cuộc gọi FIRST trong hàm tạo con của bạn. – bakoyaro

5

Bạn nên sử dụng từ khóa siêu.

public ChildClass(...) { 
    super(...); 
} 
9

Để gọi một hàm tạo lớp cha mẹ cụ thể, hãy đặt super(param1, param2, ...) làm câu lệnh đầu tiên trong phần thân hàm lớp con.

Các vấn đề liên quan