Trường hợp "siêu" thực sự được xác định? [Khi chúng tôi đang sử dụng super.someMethod()]. Nó được định nghĩa là một trường trong lớp java.lang.Object hay lớp java.lang.Class?Cách siêu được triển khai trong Java?
Khi chúng ta gọi từ một lớp con, siêu chứa tham chiếu đến siêu lớp của nó. Theo cách tương tự, siêu trong siêu lớp chính nó có tham chiếu đến siêu lớp của nó [Theo cách này tối đa java.lang.Object]. Vì vậy, làm thế nào java injects các siêu tham chiếu đến trường "siêu" cho phép chúng ta gọi các phương thức siêu lớp?
Có bất kỳ dưới implementaations mui xe như sau:
Class current = this.getClass();
Class parent = current.getSuperclass();
System.out.println("name is =" + parent);
1 Tôi thứ hai này. Trong mã byte, nó không khác với lời gọi phương thức chuẩn. – Jivings
Bạn đã đúng, đến mức có thể ở cấp độ bytecode vi phạm các quy tắc mà trình biên dịch thực thi và gọi super() không phải là điều đầu tiên trong một hàm tạo. Bạn có thể sửa đổi bytecode để làm điều này và JVM sẽ vui vẻ chạy nó. –