抽象类与接口的区别与使用

     我们在编程中经常会定义一个抽象类或是一个接口用来书写共有的方法,以便提高代码的耦合度使得后期维护方便。那接口与抽象类有什么区别呢,书中举得例子有的使用抽象类有的使用接口,你明白为什么这是为什么么?如果在你的代码中还没有用到,那你就借此机会学习一下。
    首先我们要先明确的是抽象类是个类,而接口是个接口,它是一个必须要带上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();

}

      发现区别了吧,在接口中可以定义抽象方法却不能定义具体的方法实现,它只能允许你定义方法但是不能有任何方法体,抽象类就比它宽容多了,它除了能定义抽象方法以外还可以定义具体的方法,并且可以定义方法体内容。

     它们两唯一相同的地方就是,实现抽象类和接口的类必须实现其中的所有方法。

既然你已经了解了接口和抽象类的区别,在你的编程中你就可以根据你的编程要求去设计了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值