Bản quyền thuộc về TITV.vn,
vui lòng không đăng tải lại nội dung từ trang này.
Video giải thích chi tiết
Khái niệm Overriding
Overrding hay ghi đè phương thức, được sử dụng trong trường hợp lớp con kế thừa từ lớp cha và muốn định nghĩa lại một phương thức đã có mặt ở lớp cha.
Lý do: Một lớp cha thường có thể có nhiều lớp con kế thừa, tuy nhiên phương thức ở lớp cha có thể phù hợp với lớp con này nhưng không phù hợp với lớp con khác, do đó lớp con cần ghi đè lại phương thức đó cho phù hợp.
Ví dụ:
Quy tắc:
Lớp con và lớp cha có mối quan hệ kế thừa.
Phương thức trong lớp con phải có tên giống với lớp cha.
Phương thức trong lớp con phải có tham số giống với lớp cha.
Ví dụ
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void eat() {
System.out.println("Tôi đang ăn .... ");
}
public void makeSound() {
System.out.println("................");
}
public void sleep() {
System.out.println("Zzzzzzzzzzzzzzzz");
}
}
public class Dog extends Animal{
public Dog() {
super("Dog");
}
@Override
public void eat() {
System.out.println("Tôi ăn xương!");
}
@Override
public void makeSound() {
System.out.println("Gâu gâu");
}
}
public class Cat extends Animal{
public Cat() {
super("Cat");
}
@Override
public void eat() {
System.out.println("Tôi ăn cá!");
}
@Override
public void makeSound() {
System.out.println("Meo meo");
}
}
public class Bird extends Animal{
public Bird() {
super("Bird");
}
@Override
public void eat() {
System.out.println("Tôi ăn sâu!");
}
@Override
public void makeSound() {
System.out.println("Líu lo");
}
}
public class Test {
public static void main(String[] args) {
System.out.println("Test dog: ");
Dog d = new Dog();
d.eat();
d.makeSound();
d.sleep();
System.out.println("---- ");
System.out.println("Test cat: ");
Cat c= new Cat();
c.eat();
c.makeSound();
c.sleep();
System.out.println("---- ");
System.out.println("Test bird: ");
Bird b= new Bird();
b.eat();
b.makeSound();
b.sleep();
}
}
Không có nhận xét nào:
Đăng nhận xét