Ta có: ElectricCar extends Car extends Automobile
- Trong class Automobile
private final String drive()–> “private” có nghĩa là method chỉ của riêng object đó, không thể access được từ class khác.
- Trong class Car
protected String drive()–> “protected” có nghĩa là method này có thể được access từ class trong cùng package và class con (nằm trong hay ngoài package đều được).
- Trong class ElectricCar
public final String drive()–> “public” có nghĩa là method này có thể được access từ mọi class khác. “final” có nghĩa là class con của class này (nếu có) không thể override đc method này.
Theo code hiện tại, public final String drive() [dòng 16] đang override method protected String drive() [dòng 10]
Code từ entry point (method main):
public static void main(String[] wheels) {
final Car car = new ElectricCar();
System.out.print(car.drive());
}Theo tính chất của Polymorphism (đa hình) thì khi gọi override method thì sẽ gọi method ở class con, có nghĩa là run method public final String drive() [dòng 16]
Đáp án là B: Driving electric car
Hi bạn, mình đang thắc mắc một chỗ: Mình không thấy annotation “@Override” ở trước [dòng 16] thì sao có thể override được nhỉ?
Cái annotation Override chỉ giúp bạn biết rằng bạn đang override 1 method của class cha thôi, chứ thực ra thì khi bạn viết method ở class con mà trùng method signature với class cha là đã override rồi.