为什么要接口与抽象类混合使用?
接口和抽象类都是共性的高级抽象,但是接口有个缺点,如果实例类都实现接口,必须复写接口所有的方法,如果实例类继承抽象类则可以不完全复写所有的方法,那么,实例类可以复写抽象父类的任意一个方法,就不用复写那些多余的方法。
我们可以把程序设计成如图:
程序:
package com.dragon.src;
/**
*
* 定义一个接口,声明一些共性的方法
*
* @author DRAGON
*
*/
interface People {
public void run();
public void eat();
public void sleep();
public void drink();
}
/**
* 使用抽象类来实现接口
*
* @author DRAGON
*
*/
abstract class Person implements People {
@Override
public void run() {
}
@Override
public void eat() {
}
@Override
public void sleep() {
}
@Override
public void drink() {
}
}
/**
* 继承抽象类
*
* @author DRAGON
*
*/
class Dragon extends Person {
@Override
public void eat() {
System.out.println("Dragon跑起来啦");
}
}
/**
* 继承抽象类
*
* @author DRAGON
*
*/
class Xx extends Person {
@Override
public void sleep() {
System.out.println("Xx睡啦");
}
}
/**
* 主函数类
*
* @author DRAGON
*
*/
public class Abstract_Interface {
/**
* @param args
*/
public static void main(String[] args) {
Dragon dragon = new Dragon();
dragon.eat();
Xx xx = new Xx();
xx.sleep();
}
}
避免复写多余的方法,使用抽象类与接口混合灵活使用,有利于程序的优化。