首先我们要先明确的是抽象类是个类,而接口是个接口,它是一个必须要带上interface关键字的类,同时它也是抽象类的变体。
其次由于 java是单继承所以抽象类的子类不能再继承其他的类但却可以实现多个接口。注意一般我们说的是继承类,实现接口,很少有人说继承接口,所以他们的关键字自然不一样。
继承抽象类:
public class FoodF1Model extends FoodModel{
@Override
public void addYoil() {
// TODO Auto-generated method stub
System.out.println("要加油");
}
@Override
public void addVagetables() {
// TODO Auto-generated method stub
System.out.println("要放菜");
}
@Override
public void addSult() {
// TODO Auto-generated method stub
System.out.println("要加盐");
}
public void finsh(){
this.addYoil();
this.addVagetables();
this.addSult();
}
}
实现接口:
public class Women implements IWomen{
private int type = 0;
private String request = "";
public Women(int _type,String _requst) {
this.type = _type;
}
}
@Override
public int getType() {
// TODO Auto-generated method stub
return this.type;
}
@Override
public String getRequest() {
// TODO Auto-generated method stub
return this.request;
}
}
正如你所见抽象类继承的关键字是extends,而实现接口的关键字是implements,如果在你编程中突然出现两个或两个以上的父类是你该怎么办呢?没错,就是将一个父类写成抽象类剩下的写成接口类。下面让我们来看看如何定义接口和抽象类:
抽象类定义:
public abstract class Handler {
public final static int FATHER_LEVEL_REQUUEST = 1;
public final static int HUSBAND_LEVEL_REQUEST = 2;
public final static int SON_LEVEL_REQUEST = 3;
private int level = 0;
private Handler nextHandler;
public Handler(int _level){
this.level = _level;
}
public final void HandlerMessage(IWomen women){
if(women.getType() == this.level){
this.response(women);
}else{
if(this.nextHandler != null){
this.nextHandler.HandlerMessage(women);
}else{
System.out.println("---没地方请示了,按不同意处理");
}
}
}
public void setNext(Handler _handler){
this.nextHandler = _handler;
}
protected abstract void response(IWomen women);
}
接口定义:
public interface IWomen {
public int getType();
public String getRequest();
}
发现区别了吧,在接口中可以定义抽象方法却不能定义具体的方法实现,它只能允许你定义方法但是不能有任何方法体,抽象类就比它宽容多了,它除了能定义抽象方法以外还可以定义具体的方法,并且可以定义方法体内容。
它们两唯一相同的地方就是,实现抽象类和接口的类必须实现其中的所有方法。
既然你已经了解了接口和抽象类的区别,在你的编程中你就可以根据你的编程要求去设计了。