第3节案例猫和狗/类和接口的关系/抽象类和接口的区别

案例:猫和狗

  需求:对猫和狗进行测试,他们就可以跳高了,这里加入了跳高功能。请采用抽象类和接口来实现猫狗案例,并在测试类中进行测试

  思路:

  1、定义接口:成员方法:跳高();

  2、定义抽象动物类(Animal):成员变量:姓名、年龄;构造方法:无参,带参;成员方法:get/set方法,吃饭();

  3、定义具体猫类(Cat),继承动物类,实现跳高接口,构造方法:无参,带参;成员方法:重写吃饭(){...},重写跳高(){....}

  4、定义具体狗类(Cat),同上

  5、定义测试类(....Demo),写代码测试

package itheima_15;

public interface Jump {
    void show();//跳高
}
package itheima_15;

public class Animal implements Jump{
    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;
    }

    @Override
    public void show() {
        System.out.println("动物会跳高了");
    }

    public void eat(){
        System.out.println("动物在吃饭");
    }
}
Animal
package itheima_15;

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

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

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

    @Override
    public void show() {
        System.out.println("猫会跳高了");
    }
}
Cat
package itheima_15;

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

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

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

    @Override
    public void show() {
        System.out.println("狗会跳高了");
    }
}
Dog
package itheima_15;

public class AnimalJumpDemo {
    public static void main(String[] args) {
        Animal a=new Cat();
        a.setName("加菲猫");
        a.setAge(5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        a.show();

        System.out.println("-------");

        a=new Cat("加菲",6);
        System.out.println(a.getName()+","+a.getAge());

        System.out.println("-------");

        Animal b=new Dog();
        b.setName("狗梦");
        b.setAge(24);
        System.out.println(b.getName()+","+b.getAge());
        b.eat();
        b.show();

        System.out.println("-------");

        b=new Dog("狗梦",18);
        System.out.println(b.getName()+","+b.getAge());
    }
}
AnimalJumpDemo

 

类和接口的关系

  类和类的关系

    继承关系,只能单继承,但是可以多层继承

  类和接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  接口和接口的关系

    继承关系,可以单继承,也可以多继承

package itheima_16;

public interface Inter1 {
}
Inter1
package itheima_16;

public interface Inter2 extends Inter1,Inter3{
}
Inter2
package itheima_16;

public interface Inter3 {
}
Inter3
package itheima_16;

public class InterImpl extends Object implements Inter1,Inter2,Inter3{
}

 

抽象类和接口的区别

  成员区别

    抽象类  变量,常量;有构造方法;有抽象方法,也有非抽象方法

    接口   常量;抽象方法

  关系区别

    类与类  继承,单继承

    类与接口  实现,可以单实现,也可以多实现

    接口与接口  继承,单继承,多继承

  设计理念区别

    抽象类  对类抽象,包括属性、行为

    接口    对行为抽象,主要是行为

  抽象类是对事物的抽象,而接口是对行为的抽象

  

  

posted @ 2021-03-03 21:45  Testtext  阅读(395)  评论(0)    收藏  举报