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

目录

猫和狗(接口版本)

画图分析 

 案例代码


猫和狗(接口版本)

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

1. 定义跳高接口(JumpInterface)

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

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

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

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

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

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

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

画图分析 

【Java】猫和狗接口版本思路分析_第1张图片


 案例代码

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()跳高的 抽象方法
     * 

* 抽象类 实现接口中的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();
    }
}

下一篇文章:

你可能感兴趣的:(java,开发语言,封装,继承,多态,接口)