概念比较

代码层面比较
我们应该何时选用抽象类,何时使用接口呢?我们通过一个具体例子来理解一下.
比如超人Superman类继承自父类People类,People类中除了包含超人,还包含一般人、蜘蛛侠、绿巨人等,这时便可以将People类声明为一个抽象类.而超人Superman不仅是拥有People走路和跑步的功能,它还拥有一般人类没有的功能"飞",而很多东西都具有飞的功能,比如鸟飞,气球飞,飞机飞..而这些东西都抽象不出来一个公共的父类,所以就将"飞"这个功能定义为一个接口,以便其他生物如鸟去调用飞的功能.
具体代码:
// 接口:fly
public interface IFly{
void fly();
}
// 父类:People类
public abstract class People{
// 声明抽象方法walk()和run()
public abstract void walk();
public abstract void run();
}
// 子类Superman类
public class Superman extends People implements IFly{
public void walk(){
System.out.println("超人可以走路");
}
public void run(){
System.out.println("超人可以奔跑");
}
public void fly(){
System.out.println("超人可以飞");
}
}
网友评论