【Java】猫和狗接口版本思路分析

目录

猫🐱和狗🐕(接口版本)

画图分析 

 案例代码


猫🐱和狗🐕(接口版本)

需求:对猫和狗进行训练,它们就可以跳高了,这里加入了跳高功能,请采用抽象类和接口来实现猫和狗的案例。

1. 定义跳高接口(JumpInterface)

  • 成员方法:跳高()——jump();

2. 定义动物类抽象类(Animal)实现跳高接口

  • 成员变量:姓名、年龄
  • 构造方法:无参、带参   
  • 成员方法:get/set方法,吃饭()——eat()

3. 定义猫类(Cat),继承动物类Animal

  • 构造方法:无参、带参
  • 成员方法:重写eat(),重写跳高jump()

4. 定义狗类(Dog),继承动物类Animal

  • 构造方法:无参、带参
  • 成员方法:重写eat(),重写跳高jump()

画图分析 


 案例代码

JumpInterface.java

package com.面向对象.Demo30;

public interface JumpInterface {
    //跳高方法jump()
    void jump(); //==> public abstract void jump();
}

Animal.java

package com.面向对象.Demo30;

public abstract class Animal implements JumpInterface {
    private String name; // 姓名
    public int age;      // 年龄

    public Animal() {
    }

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

    /**
     * 在 Animal 动物类中 实际已经有一个 jump()跳高的 抽象方法
     * <p>
     * 抽象类 实现接口中的jump() 抽象方法
     * 相当于在Animal(抽象)类 实现了接口
     * 意味这在Animal类中存在jump()抽象方法
     * 正常情况是不需要写的,让抽象类的子类进行重写
     */

    public abstract void eat();

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

Cat.java

package com.面向对象.Demo30;

public class Cat extends Animal {
    public Cat(String name, int age) {
        //super(); 默认第一行 调用父类中的无参构造方法
        super(name, age);
    }

    @Override
    public void jump() {
        System.out.println("Cat-jump()");
    }

    @Override
    public void eat() {
        System.out.println("Cat-eat()");
    }
}

Dog.java

package com.面向对象.Demo30;

public class Dog extends Animal {
//    public Dog(String name, int age) {
//        super(name, age);
//    }

    @Override
    public void jump() {
        System.out.println("Dog-jump()");
    }

    @Override
    public void eat() {
        System.out.println("Dog-eat()");
    }
}

AnimalDemo.java

package com.面向对象.Demo30;


public class AnimalDemo {
    public static void main(String[] args) {
        JumpInterface cat1 = new Cat("小猫1", 1);
//        System.out.println(cat1.getName() + "," + cat1.getAge());//报错,编译看左边,JumpInterface中没有get/set方法
        cat1.jump();
//        cat.eat(); //报错,编译看左边,JumpInterface中没有eat方法

        System.out.println("=============");
        Animal cat2 = new Cat("小猫2", 2);
        System.out.println("name:"+cat2.getName() + ",age:" + cat2.getAge());
        cat2.jump();
        cat2.eat();

        System.out.println("=========================");
        Animal dog = new Dog();
        dog.setName("小狗1");
        dog.setAge(1);
        System.out.println("name:"+dog.getName()+",age:"+dog.getAge());
        dog.jump();
        dog.eat();
    }
}

下一篇文章:类和接口的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值