1.白色4条腿的北极熊(Bear)会吃(吃蜂蜜)和抓鱼(catchFish)
2.黑色4条腿的大熊猫(Panda)会吃(吃竹子)和爬树(climbTree)
要求:
把北极熊和大熊猫的共性提取动物类(Animal)中,使用抽象类,在Test测试类中创建北极熊和大熊猫对象,调用方法实现控制台输出;
参考方案:
1.定义一个动物类,里面有颜色和腿的条数,两个动物的共性就是吃的方法,所以可以把共性的吃的方法抽取出来,由于这个吃的方法内容无法确定,所以定义成抽象方法
2.定义出来的Bear类和Panda类都要继承动物类,重写吃的方法
3.定义北极熊和大熊猫的特有方法
4.在测试类中创建两个动物的对象,为属性赋值,并调用方法
实现步骤:
1.定义一个Animal类,定义两个私有属性(颜色,个数),对应的构造以及get/set方法
public abstract class Animal {
private String color;
private int tuiNum;
public abstract void eat();//抽象吃的方法,在子类中实现
public Animal() {
}
public Animal(String color, int tuiNum) {
this.tuiNum = tuiNum;
this.color = color;
}
public int getTuiNum() {
return tuiNum;
}
public void setTuiNum(int tuiNum) {
this.tuiNum = tuiNum;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
2.定义子类Bear(北极熊) 和Panon(大熊猫类) 继承Animal类,重写父类中的抽象方法eat(),并在子类中写出各种不同的方法
public class Bear extends Animal {
//北极熊
public Bear() {
super();//调用父类的无参构造器
}
public Bear(String color, int tuiNum) {
super(color, tuiNum);//调用父类的有参构造器方便创建对象时候初始化;
}
@Override
public void eat() {
System.out.println(getColor() + getTuiNum() + "条腿的北极熊正在吃蜂蜜~~");
}
public void catchFish() {
System.out.println(getColor() + getTuiNum() + "的北极熊正在抓鱼~~");
}
public class Panda extends Animal {
//大熊猫
public Panda() {
super();
}
public Panda(String color, int tuiNum) {
super(color, tuiNum);
}
@Override
public void eat() {
System.out.println(getColor() + getTuiNum() + "条腿的大熊猫正在吃竹子~~");
}
public void climbTree() {
System.out.println(getColor() + getTuiNum() + "条腿的大熊猫正在爬树~~");
}
}
3.测试类中创建对象,调用各种方法进行输出
public class Test {
public static void main(String[] args) {
//1. 创建北极熊对象 b,颜色赋值为白色,腿的个数赋值为4
Bear B = new Bear("白色", 4);
//2. 调用北极熊对象b的吃方法
B.eat();
//3.调用北极熊对象b的抓鱼方法
B.catchFish();
Panda P=new Panda("黑色",4);
P.eat();
P.climbTree();
}
}
输出结果: