Có, được phép định nghĩa phương thức trùng tên với lớp. Không có lỗi compile-time hay runtime. Nhưng không khuyến khích theo chuẩn code Java. Thông thường constructor trùng tên class.
Ví dụ minh họa
public class MethodNameTest {
private String str = "Welcome to TutorialsPoint";
public void MethodNameTest() { // Method trùng tên class
System.out.println("Both method name and class name are the same");
}
public static void main(String args[]) {
MethodNameTest test = new MethodNameTest();
System.out.println(test.str);
test.MethodNameTest(); // Gọi method
}
}
Code compile và chạy thành công.
Kết quả đầu ra
Welcome to TutorialsPoint Both method name and class name are the same
Phân biệt Method vs Constructor
| Đặc điểm | Method | Constructor |
|---|---|---|
| Kiểu trả về | Có (void hoặc type) | Không (không viết void) |
| Gọi | test.methodName() | new ClassName() |
| Kế thừa | Có | Không (nhưng super()) |
| Override | Có | Không |
| Mặc định | Không có | Compiler tạo no-arg nếu không khai báo |
Lưu ý
- Nếu method không có kiểu trả về → nó là constructor (dù trùng tên class).
- Nếu method có kiểu trả về (void/int/String...) → nó là method bình thường.
- Đặt tên method trùng class gây nhầm lẫn, vi phạm naming convention (method nên động từ, class danh từ).