您的位置:首页 > 编程语言 > Java开发

java中接口和抽象类的区别

2016-10-08 20:44 267 查看

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]修改而来,用它写博客,将会带来全新的体验哦:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: