package baihoc.thuake;
class Animal{
int id;
String name;
float age;
void showInfo(){
System.out.println("ID: "+id);
System.out.println("Name: "+name);
System.out.println("Age: "+age);
}
public Animal() {
}
public Animal(int id, String name, float age) {
this.id = id;
this.name = name;
this.age = age;
}
void move(){
System.out.println("Move");
}
void speak(){
System.out.println("Speak");
}
}
class Cat extends Animal{
String color;
Cat(int id,String name,float age,String color){
super(id,name,age);//Gọi đến hàm tạo 3 tham số của lớp cha
this.color=color;
}
@Override
void move() {
System.out.println("Run");
super.move();
}
void showInfo(){
super.showInfo();
System.out.println("Color: "+color);
}
}
class Dog extends Animal{
}
public class ThuaKe {
//Thừa kế (Inheritant): Còn gọi là thừa hưởng, mở rộng. Giúp ích cho lập trình viên rất nhiều
//trong việc giảm thời gian, công sức lập trình, cũng như giúp đồng nhất về cấu trúc lập trình
//đặc biệt là với những dự án (project) lớn.
//Cách thực thi thừa kế: Trong Java ta sử dụng từ khóa extends để thực thi thừa kế.
//Trung tâm của kỹ thuật thừa kế là "tái sử dụng".
//Ghi đè (Overriding): Là kỹ thuật cho phép lớp con được quyền định nghĩa phương thức giống hệt
//phương thức đã có ở lớp cha, có thể khác nhau ở phần thân hàm. Khi đó phương thức được thực
//thi là phương thức ở lớp con.
public static void main(String[] args) {
Cat cat=new Cat(1234,"Moon",2,"Black");//Lớp con không được thừa kế hàm tạo của lớp cha.
cat.move();
cat.showInfo();
// Dog dog=new Dog();
// dog.move();
}
}