为什么要接口与抽象类混合使用?
接口和抽象类都是共性的高级抽象,但是接口有个缺点,如果实例类都实现接口,必须复写接口所有的方法,如果实例类继承抽象类则可以不完全复写所有的方法,那么,实例类可以复写抽象父类的任意一个方法,就不用复写那些多余的方法。
我们可以把程序设计成如图:
程序:
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(); } }
避免复写多余的方法,使用抽象类与接口混合灵活使用,有利于程序的优化。