一道题检测你是否掌握了抽象类、抽象方法和接口,相关知识点请在【Java进阶学习篇】中点击查看
请编写带有抽象类标准的Javabean类,要求如下
属性 | 行为 | |
---|---|---|
青蛙Frog | 名字(小青蛙)、年龄(1) | 吃虫子、蛙泳 |
狗Dog | 名字(小狗)、年龄(2) | 吃骨头、狗刨式游泳 |
兔子 | 名字(小白兔)、年龄(3) | 吃胡萝卜 |
由于兔子不会游泳,并且青蛙和狗都是不同泳姿,所以swim是接口
public interface Swim {
public abstract void swim();
}
由于三种动物都有吃的行为,但是吃的不一样,所以eat是抽象方法
public abstract void eat();
由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可
在子类中,对于接口和抽象方法要进行方法体的重写,且要继承属性
public abstract class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public Animal() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void eat();
}
public interface Swim {
public abstract void swim();
}
public class Frog extends Animal implements Swim {
public Frog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("吃虫子");
}
@Override
public void swim() {
System.out.println("蛙泳");
}
}
public class Dog extends Animal implements Swim {
public Dog(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("吃骨头");
}
@Override
public void swim() {
System.out.println("狗刨式游泳");
}
}
public class Rabbit extends Animal{
public Rabbit(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("吃胡萝卜");
}
}
public class Test {
public static void main(String[] args) {
Frog f = new Frog("小青蛙",1);
System.out.println(f.getName() + "今年" + f.getAge() + "岁\n它的行为有:");
f.eat();
f.swim();
System.out.println("---------------");
Dog g = new Dog("小狗",2);
System.out.println(g.getName() + "今年" + g.getAge() + "岁\n它的行为有:");
g.eat();
g.swim();
System.out.println("---------------");
Rabbit r = new Rabbit("小白兔",3);
System.out.println(r.getName() + "今年" + r.getAge() + "岁\n它的行为有:");
r.eat();
}
}
在写子类时一定要记得重写方法,并且要继承属性,否则在测试类中将无法给子类对象赋值