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:

X.java
package viduoverloading;

public class X {
	
	void method(int a) {
		System.out.println("ONE");
	}
     
    void method(double d) {
    	System.out.println("TWO");
    }
    
}

Y.java
package viduoverloading;

public class Y extends X {

	@Override
	void method(double d) {
		System.out.println("THREE");
	}

}

MainClass.java
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, YMainClass 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:

Nguồn: freetuts.net