2012-10-17 9 views
6

Phương pháp được đề xuất đặt tiêu đề là setTitle("Title") hoặc super("Title") trong khi mở rộng javax.swing.JFrame về hiệu suất là gì?Gọi hàm tạo siêu lớp với siêu hoặc chỉ setTitle?

+1

Không mở rộng 'JFrame', chỉ cần sử dụng một phiên bản. Nhưng một trong hai cách, bạn cũng có thể vượt qua tiêu đề trong constructor cho thực tế nó là ít dòng mã để tạo/cấu hình một thể hiện. Đồng thời xem [Khi nào tối ưu hóa] (http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize). –

+5

* hiệu suất *? Bạn muốn tạo bao nhiêu JFrames? Hàng triệu giây? –

Trả lời

4

Nếu bạn grepcode JFrame (trong OpenJDK 6-b14), và đào một chút, bạn sẽ thấy rằng các nhà xây dựng JFrame() gọi constructor Frame(), trong đó kêu gọi Frame("") (link).

Vì vậy, kể từ khi ẩn super() được thêm vào nếu bạn không chỉ định một cuộc gọi tới bất kỳ nhà xây dựng siêu nào, nó sẽ là (mặc dù rất ít) hiệu quả hơn để gọi super("Title").

0

Thực hành tốt là luôn gọi siêu tương ứng (.....) khi bạn mở rộng một lớp. Khi bạn không bao giờ biết ma thuật mà siêu nhà xây dựng thực hiện đằng sau hiện trường.

Bạn không bao giờ cần chỉ

gọi super();

Đó là những gì sẽ có nếu bạn không chỉ định bất cứ điều gì khác. Bạn chỉ cần phải xác định các nhà xây dựng để gọi nếu:

  • bạn muốn gọi một constructor lớp cha mà có thông số
  • bạn muốn chuỗi để xây dựng khác trong cùng một lớp thay vì các nhà xây dựng lớp cha
+0

Bạn có ý định gọi 'super' một cách rõ ràng khi bạn mở rộng một lớp không? Nếu vậy tại sao? Bởi vì khi bạn mở rộng một lớp hoặc rõ ràng hoặc ngầm bạn gọi là 'super'? – emory

+0

Tôi đã chỉnh sửa câu trả lời của mình để đi sâu hơn một chút – Frank

1

Nếu bạn đang ở trong nhà xây dựng của mình, hãy thử ủy quyền càng nhiều chức năng càng tốt cho nhà xây dựng siêu. Có thể bạn có thể lưu nó khỏi làm một số công việc.

Ví dụ: hàm tạo siêu mặc định có thể tạo một số đối tượng bên trong sẽ chỉ bị ghi đè khi bạn gọi hàm setter. Nếu bạn chuyển đúng dữ liệu ngay lập tức, bạn cho nó cơ hội hiệu quả hơn.

Nhưng tôi nghĩ trong trường hợp cụ thể này, nó không quan trọng lắm.