JavaScript is required

Phương thức nào đưa vào dòng 6 sẽ sinh lỗi?
Chọn một câu trả lời
class Super {
public float getNum() { return 3.0f; }
}
public class Sub extends Super {
}

A.
public getNum() { }
B.
public float getNum(double d) { }
C.
public float getNum() { return 4.0f; }
D.
public double getNum(float d) { return 4.0d; }
Trả lời:

Đáp án đúng: A


Câu hỏi kiểm tra về tính kế thừa và ghi đè phương thức (method overriding) trong Java. Khi một lớp con (Sub) kế thừa từ lớp cha (Super), nó có thể ghi đè (override) các phương thức của lớp cha. Việc ghi đè cần tuân thủ một số quy tắc. * **Đáp án A:** `public getNum() { }` - Thiếu kiểu trả về (return type), gây ra lỗi biên dịch. Vì phương thức `getNum()` ở lớp cha trả về `float`, nên phương thức ghi đè ở lớp con phải có kiểu trả về tương thích hoặc giống hệt. * **Đáp án B:** `public float getNum(double d) { }` - Đây là nạp chồng phương thức (method overloading), không phải ghi đè. Vì tham số khác với phương thức ở lớp cha. * **Đáp án C:** `public float getNum() { return 4.0f; }` - Đây là một cách ghi đè hợp lệ. Nó có cùng tên, cùng kiểu trả về và cùng số lượng tham số (không có tham số) với phương thức ở lớp cha. * **Đáp án D:** `public double getNum(float d) { return 4.0d; }` - Đây là nạp chồng phương thức, không phải ghi đè. Vì tham số khác với phương thức ở lớp cha. Vậy, phương thức ở đáp án A sẽ sinh lỗi do thiếu kiểu trả về.

Câu hỏi liên quan