Ok chỉ dành riêng cho kiến thức sake, tôi đã cố gắng dưới đây trường hợp (Giả sử rằng lớp A và B là trong cùng một gói)Tại sao Ngoại lệ hoặc Lỗi không được tạo khi không tìm thấy phương pháp chính nào?
ClassA
public class ClassA {
public static void main(String[] args) {
System.out.println("A");
}
}
ClassB
public class ClassB extends ClassA {
public static void main(String[] args) {
System.out.println("B");
}
}
thực hiện trên ClassB
nó sẽ sản xuất đầu ra của B
ngay bây giờ sau khi thay đổi bên dưới trong classB
ClassB
public class ClassB extends ClassA {
//blank body
}
Nếu tôi biên dịch và chạy trong terminal
nó mang lại cho tôi ra A
đó là hoàn toàn bất ngờ vì nó nên đã cho NoSuchMethodError
như không có phương pháp chính được họ để vui lòng giải thích những hành vi kỳ lạ?
Lưu ý: Nhiều câu trả lời chứa Override
từ vui lòng sử dụng hiding
vì chúng tôi không thể ghi đè phương thức tĩnh trong java.
Không có phương pháp ghi đè 'tĩnh', nhưng có ** ẩn **. Trong trường hợp đầu tiên, 'ClassB' ẩn phương thức' main' khỏi 'ClassA'. Trong trường hợp thứ hai, 'ClassB' không ẩn phương thức' main', vì vậy phương thức 'fromA' được gọi. –