Java面向对象思想_接口和抽象类_编写带有接口和抽象类的标准JavaBean类——小练习

题目:

青蛙Frog                属性:名字,年龄                行为:吃虫子,蛙泳

狗Dog                    属性:名字,年龄                行为:吃骨头,狗刨

兔子Rabbit             属性:名字,年龄                行为:吃胡萝卜

首先根据题目要求分析并画出关系图:

分析:这三类都可归为动物Animal类,且共性有属性中的名字和年龄,行为中都有“吃”,即可以创建父类Animal类,放入属性:名字和年龄,并定义“吃”方法,由于每个类的吃方法都有差异,所以父类中将“吃”方法定义为抽象方法,这样父类Animal也必须定义成抽象类。游泳行为只有青蛙和狗有,不是所有类都具有同时也不是只有一个类具有,这种情况则可以使用接口,在接口中定义游泳方法,仅在青蛙和狗的类中通过implement执行。

接下来开始画图():


根据关系图进行编码:

先编写Animal类

Animal类:

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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();
}

再编写接口Swim

Swim接口:

public interface Swim {

    //定义抽象方法 游泳
    public abstract void swim();

}

继续编写子类(注意extends+父类和implements+接口调用游泳方法)

青蛙Frog类:

public class Frog extends Animal implements Swim {

    public Frog() {
    }

    public Frog(String name, int age) {
        super(name, age);
    }


    @Override
    public void eat() {
        System.out.println("吃虫子");
    }


    @Override
    public void swim() {
        System.out.println("蛙泳");
    }
}

狗Dog类:

public class Dog extends Animal implements Swim {

    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }


    @Override
    public void eat() {
        System.out.println("吃骨头");
    }


    @Override
    public void swim() {
        System.out.println("狗刨");
    }
}

兔子Rabbit类:

public class Rabbit extends Animal {
    public Rabbit() {
    }

    public Rabbit(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃胡萝卜");
    }


}

最后编写测试类:

测试类Test:

public class Test {
    public static void main(String[] args) {
        //创建青蛙对象
        Frog f = new Frog("小蛙", 1);
        f.eat();
        f.swim();
        System.out.println(f.getName() + ", " + f.getAge());

        //创建狗对象
        Dog d = new Dog("大黄", 2);
        d.eat();
        d.swim();
        System.out.println(d.getName() + ", " + d.getAge());

        //创建兔子对象
        Rabbit r = new Rabbit("小白兔", 3);
        r.eat();
        System.out.println(r.getName() + ", " + r.getAge());
    }
}

运行结果:

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值