接口与抽象类的区别_猫与狗案例

抽象类与接口

//Interface.java  接口
package JiekouTEST;

public interface Interface {

    public abstract void jumpping();  //不跟方法体,不能被实例化
}

//Animal.java  抽象类
package JiekouTEST;

public abstract class Animal implements Interface {  //非抽象类中存在抽象类会报错
    String name;
    int age;


    @Override
    public void jumpping() {

    }

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

//Cat.java
package JiekouTEST;

public class Cat extends Animal implements Interface{
    //继承抽象类和抽象接口,那么需要重写eat方法和jumping方法
		//父类已有构造方法,无需再次构造。
//    public Cat() {
//    }

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

    @Override
    public void eat() {
        System.out.print("加菲猫在吃老鼠!!!");
    }

    @Override
    public void jumpping() {
        System.out.print("加菲猫胖胖!!!跳不高!!!");
    }

    public void show(){
        System.out.print(name +" " + age);
    }


}

// 测试类
package JiekouTEST;

public class AnimalDemo  {
    public static void main(String[] args) {
        Cat c = new Cat();
        c.setAge(5);
        c.setName("加菲猫");
        c.eat();
        c.jumpping();
    }
}


本文章使用limfx的vscode插件快速发布