Java - Hãy đưa ra kết quả sau khi biên dịch đoạn chương trình cho sẵn.
Hãy đưa ra kết quả sau khi biên dịch của đoạn chương trình sau và sử dụng Eclipse để kiểm chứng:
package viduoverloading; public class X { void method(int a) { System.out.println("ONE"); } void method(double d) { System.out.println("TWO"); } }
package viduoverloading; public class Y extends X { @Override void method(double d) { System.out.println("THREE"); } }
package viduoverloading; public class MainClass { public static void main(String[] args) { Y y = new Y(); y.method(100); } }
Bài giải
-------------------- ######## --------------------
Kết quả của đoạn chương trình trên: ONE
Giải thích: Trong chương trình trên, chúng ta có 3 lớp là X
, Y
và MainClass
chứa phương thức main()
, trong đó lớp Y
kế thừa lớp X
. Trong lớp X
, chúng ta có 2 phương thức là method(int a)
hiển thị dòng "ONE" và method(double d)
hiển thị dòng "TWO", lúc này trong lớp X
có sự nạp chồng phương thức method()
(cùng tên, cùng số đối số nhưng khác nhau về kiểu dữ liệu của đối số truyền vào). Trong lớp Y
, chúng ta ghi đè lại phương thức method(double d)
của lớp X
và phương thức in ra màn hình dòng "THREE".
Trong lớp MainClass
, chúng ta tạo ra đối tượng y
của lớp Y
và gọi phương thức method()
với đối số truyền vào là 100
. Lúc này 100
là số nguyên nên dòng code y.method(100);
sẽ gọi đến phương thức method()
của lớp X
là vì phương thức này có đối số truyền vào có kiểu số nguyên nên khi biên dịch thì dòng "ONE" sẽ được hiển thị ra màn hình.
Kết quả biên dịch chương trình sử dụng Eclipse:
Câu hỏi thường gặp liên quan:
- Java - Liệt kê sự khác nhau giữa overriding và overloading.
- Java - Liệt kê những trường hợp không phải nạp chồng phương thức.
- Java - Chúng ta có thể nạp chồng phương thức main() được không?
- Java - Hãy đưa ra kết quả sau khi biên dịch đoạn chương trình cho sẵn.
- Java - Hãy đưa ra kết luận đoạn chương trình cho sẵn có chạy được hay không và giải thích.