java中接口和抽象类的区别

java中接口和抽象类的区别

接口和抽象类的简要对比:

对比点接口抽象类
本质对行为的抽象对事物整体的抽象
内部成员只能包含抽象方法和静态变量可以有抽象方法,变量以及实现的方法
描述关系like -ais-a
实现抽象方法的关键字implementextends
是否支持夺继承
继承后的描述我有。。行为我是。。。。

example:

以网上流行的door和alarm为例:
首先分析功能:
door具有开门和关门的功能,还有宽和高等属性,所以我们可以对门进行抽象,这里是对事物的抽象,所以使用抽象类:

abstract class Door{
    int height;
    int width;
    void close();
    void open();
}

现在我需要一个门,怎么办呢?很简单,继承Door即可,实现如下:

class MDoor extends Door{
    height = 15;
    width = 5@Override
    void close()
    {}
    @Override
    void open()
    {} 
}

现在你也需要一个门,并且你的门需要有报警功能,分析一下:首先你要的是门,所以要实现Door,同事你需要报警功能,这可怎么办,在Door里边增加一个alarm()功能?我当然不干,我不要报警功能,他打扰我休息,怎么办呢?哦,刚才说的接口是对行为的抽象,那我直接把报警功能抽象成接口就可以了,实现如下:

interface Alarm{
    void alarm();
}

然后就可以生产你的门了:

class YourDoor extends Door Implement   Alarm
{
    height = 15;
    width = 5@Override
    void close()
    {}
    @Override
    void open()
    {} 
    @Override
    void alarm()
    {} 
}

简单的描述就是:我的门是普通门,你的门是一个门,但是在普通门基础上增加了响铃行为。
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值