抽象类来实现接口
抽象类和接口都是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();
}
}

浙公网安备 33010602011771号