Đây là câu hỏi được đặt ra trong cuộc phỏng vấn. Chúng ta có thể gọi một hàm khởi tạo từ một hàm khác nếu một lớp có nhiều hàm tạo trong java và khi nào?gọi một hàm khởi tạo từ một hàm khác trong java
Trả lời
Bạn có thể, và cú pháp tôi biết là
this(< argument list >);
Bạn cũng có thể gọi một lớp siêu constructor qua
super(< argument list >);
Cả các cuộc gọi như vậy chỉ có thể được thực hiện như là câu lệnh đầu tiên trong hàm tạo (vì vậy bạn chỉ có thể gọi một hàm tạo khác, và trước khi bất cứ điều gì khác được thực hiện).
Và bạn không thể làm bất cứ điều gì đòi hỏi một tham chiếu đến điều này. –
nó cũng phải ở dòng đầu tiên của hàm tạo – sixtyfootersdude
có, dòng đầu tiên để nó sẽ là người đầu tiên được triển khai – Francis
this(other, args);
Điều này hoặc là gây hiểu lầm hoặc chỉ đơn giản là sai! Cái gì khác? Bạn đơn giản gọi phương thức khởi tạo khác bằng cách sử dụng 'this (args-required-by-constructor)' hoặc 'super (args-required-by-constructor);' –
dụ:
public class FileDb {
/**
*
*/
public FileDb() {
this(null);
}
public FileDb(String filename) {
// ...
}
}
Có, bạn có thể làm điều đó.
Có xem xét việc thực hiện ArrayList
ví dụ:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this(10);
}
Các constructor thứ hai gọi là một đầu tiên với một default capacity
của mười.
FYI, đây được gọi là telescoping/telescopic constructor pattern.
Nó được thảo luận trong JLS 8.8.7.1 Explicit Constructor Invokations
- lời gọi constructor thay thế bắt đầu với từ khóa
this
(có thể mở đầu với các đối số kiểu tường minh). Chúng được sử dụng để gọi một hàm tạo thay thế của cùng một lớp.- Gọi hàm khởi tạo Superclass bắt đầu bằng từ khóa
super
(có thể được bắt đầu bằng đối số loại rõ ràng) hoặc biểu thức Chính. Chúng được sử dụng để gọi một hàm tạo của lớp cha trực tiếp.
Không có câu trả lời nào hoàn tất, vì vậy tôi sẽ thêm câu trả lời này vào ô trống.
Bạn có thể gọi một constructor từ khác trong cùng một lớp, hoặc gọi lớp siêu, với những hạn chế sau:
- Nó phải được dòng đầu tiên của mã trong constructor gọi.
- Nó không thể có bất kỳ tham chiếu rõ ràng hoặc ngầm định nào cho
this
. Vì vậy, bạn không thể vượt qua một lớp bên trong (ngay cả một lớp ẩn danh nếu nó tham chiếu bất kỳ phương thức thể hiện nào), hoặc kết quả của một cuộc gọi phương thức không tĩnh, như một tham số.
Cú pháp (như đã đề cập bởi những người khác) là:
MyClass() {
someInitialization();
}
MyClass(String s) {
this();
doSomethingWithS(s);
}
- 1. C# gọi một hàm khởi tạo từ phần thân khác
- 2. Gọi một hàm tạo từ một hàm tạo khác trong cùng một lớp
- 3. C++ 11 khởi tạo vector trong một cuộc gọi hàm
- 4. cách gọi hàm từ một tệp khác?
- 5. Gọi hàm thành viên từ một hàm tạo
- 6. một hàm khởi tạo trả lại trong java
- 7. gọi hàm tạo bản sao bên trong hàm tạo khác
- 8. Cách gọi một hàm từ một tệp lớp khác
- 9. Có thể constructor gọi một hàm tạo khác trong C++?
- 10. Cách khởi tạo một trường bit trong một hàm tạo
- 11. Gọi hàm tạo như một hàm trong C#
- 12. Sử dụng hàm tạo trong một cuộc gọi hàm?
- 13. script javax cách gọi một hàm trong JavaScript từ Java
- 14. Gọi hàm gọi lại MATLAB/hàm xử lý từ Java
- 15. C - Khởi tạo một mảng toàn cục trong một hàm
- 16. Gọi hàm Oracle từ Java
- 17. C++ Khởi tạo Mảng trong Lệnh gọi hàm hoặc Gọi hàm
- 18. Trong Java, một trường cuối cùng có thể được khởi tạo từ một trình trợ giúp hàm tạo không?
- 19. gọi hàm tạo của một thành viên lớp trong hàm tạo
- 20. Gọi các hàm Javascript từ một Java Applet
- 21. Gửi đối số cho một hàm tạo tĩnh trong Java?
- 22. Ngăn chặn cuộc gọi của một hàm tạo riêng từ bên trong lớp trong Java
- 23. hàm gọi lua từ một chuỗi có tên hàm
- 24. Cách khởi tạo IDictionary trong hàm tạo?
- 25. Khởi tạo Boost shared_ptr trong hàm tạo
- 26. Tôi có thể gọi một hàm tạo quá tải từ một hàm tạo khác của cùng một lớp trong C# không?
- 27. Gọi một hàm từ một chuỗi trong C#
- 28. Có thể tạo một thể hiện của một đối tượng trong Java mà không cần gọi hàm tạo không?
- 29. Gọi một hàm tạo để khởi tạo lại các biến dường như không hoạt động?
- 30. C++: khởi tạo hàm tạo cho mảng
Bạn có thể làm rõ các câu hỏi? Nhiều nhà xây dựng ở đó để tạo ra các đối tượng khác nhau và có thể được gọi từ các lớp khác.Chúng được tạo ra chỉ vì mục đích đó. –
anh ta có nghĩa là gọi một nhà xây dựng từ một người khác. – Woot4Moo
anh ta hỏi liệu nó có được phép gọi một nhà xây dựng từ một nhà xây dựng khác hay không khi nào một lớp có nhiều hơn một nhà xây dựng – Francis