抽象类练习猫狗案例
当无法去描述一个方法的时候就讲它定义为抽象的。
class Test01_Animal{
public static void main(String[] args){
Cat cat = new Cat("加菲", 3);
System.out.println(cat.getName() + "..." + cat.getAge());
cat.eat();
cat.catchMouse();
System.out.println("========");
Dog dog = new Dog("八公", 4);
System.out.println(dog.getName() + "..." + dog.getAge());
dog.eat();
dog.lookHome();
}
}
/*
* A:案例演示
* 具体事物:猫,狗
* 共性:姓名,年龄,吃饭
* 猫的特性:抓老鼠
* 狗的特性:看家
*/
abstract class Animal{
private String name; //姓名
private int age; //年龄
public Animal(){ //空参
}
public Animal(String name, int age){//有参
this.name = name;
this.age = age;
}
public void setName(String name){ //设置姓名
this.name = name;
}
public String getName(){ //获取姓名
return name;
}
public void setAge(int age){ //设置年龄
this.age = age;
}
public int getAge(){ //获取年龄
return age;
}
//由于不知道怎么吃,所以定义一个抽象的方法eat
public abstract void eat();
}
class Cat extends Animal{
public Cat(){ //空参
}
public Cat(String name, int age){//有参
//不能这么写,this调用本类或父类的成员变量,父类中已经被私有了,所以不能调用
//this.name = name;
//this.age = age;
//所以可以通过super,将参数传给父类让父类帮我们初始化
super(name, age);
}
public void eat(){
System.out.println("猫吃鱼");
}
public void catchMouse(){
System.out.println("抓老鼠");
}
}
class Dog extends Animal{
public Dog(){ //空参
}
public Dog(String name, int age){//有参
super(name, age);
}
public void eat(){
System.out.println("狗吃肉");
}
public void lookHome(){
System.out.println("看家");
}
}