抽象类来实现接口

抽象类和接口都是java中用来实现多态的方法,在此主要说明为什么会用抽象类来实现接口,因此对两者之间的异同就不介绍了。

在java一般的用法中,如果要用普通类来实现接口,则必须实现该接口中的所有方法,这样就会导致需要实现多余的方法;

采用抽象类来实现方法,可以实现该接口中的部分方法,而且当其他类继承该抽象类时,只需要实现抽象类中未实现的方法即可。

例:

  抽象类B只实现了接口A中的方法a、b,

  当类C继承类B时,只需要实现B中为实现的接口c即可。

  一般情况下,类C中的方法a、b都是调用父类B的方法a、b。

-------------------------------------------- 

另外:

  接口种没有构造方法,抽象类可以有构造方法。

转载自狂妄的老头https://www.cnblogs.com/pxffly/p/7565195.html

如有侵权,联系秒删

接口代码

package com.itheima_01;

public interface Jumpping {
    public void jump();
}

 父类

package com.itheima_01;

public abstract class Animal implements Jumpping {
    public String name;
    public 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();

    @Override
    public void jump() {
        System.out.println(name+"在跳高");
    }
}

 子类1

package com.itheima_01;

public class Cat extends Animal /*implements Jumpping*/ {
    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }
    /*public void jump() {
        System.out.println("猫跳高");
    }*/
    public void eat() {
        System.out.println("猫吃饭");
    }
}

 子类2

package com.itheima_01;
/*implements Jumpping*/
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 jump() {
        System.out.println("狗跳高");
    }*/
}

 测试类

package com.itheima_01;

public class AnimalDemo {
    public static void main(String[] args) {
       Animal c1 = new Cat();
       c1.setName("汤姆猫");
       c1.eat();c1.jump();

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

       Animal d1 = new Dog();
       d1.setName("大皇狗");
       d1.jump();d1.eat();

    }
}
原文地址:https://www.cnblogs.com/lsswudi/p/11401506.html