从功能处入手
接口: 一般用于定义、添加功能。表示ta能做什么
抽象类:一般可用于有明显的可继承关系。表示ta是什么
其他例子:
比如人跟鱼,人跟鱼都需要呼吸氧气作为生存的需要,这个呼吸是一个方法,所以就需要接口了。
当你需要区分人在空气中用肺呼吸,鱼在水中用鳃呼吸,那就要用到抽象类了。
//定义手机抽象类
abstract class Phone{
abstract void phoneSystem();
}
//定义手机的功能
interface function{
void WhetherNFC();//是否有NFC
void WhetherInfrared();//是否有红外线
}
//一个手机的系统、功能
public class flowing extends Phone implements function{
@Override
void phoneSystem() {
System.out.println("我是安卓手机");
}
@Override
public void WhetherNFC() {
System.out.println("无NFC");
}
@Override
public void WhetherInfrared() {
System.out.println("有红外线");
}
}
当然,自己理解才是真的。以下放上JAVA中的特性
抽象类和接口的对比
参数 | 抽象类 | 接口 |
实现 | 使用extends关键字来继承抽象类。如果子类不是抽象类的话,需要实现所有父类中的声明 | 使用implements来实现接口,需要实现所有声明 |
构造器 | 抽象类有构造器 | 无构造器 |
与正常JAVA类区别 | 除了不能实例化外,无其他区别 | 接口是完全不同的类型 |
访问修饰符 | 抽象方法有public、protected和default这些修饰符 | 只有public修饰符 |
多继承 | 可以继承一个类和实现多个接口 | 接口只可以实现一个或多个其它接口 |
添加新方法 | 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码 | 如果你往接口中添加方法,那么你必须改变实现该接口的类 |
main方法 | 抽象方法可以有main方法并且我们可以运行它 | 接口没有main方法,因此我们不能运行它 |
内容参考及引用:
https://www.jianshu.com/p/28e3b4d61945
https://q.cnblogs.com/q/89011/
http://blog.csdn.net/findmyself_for_world/article/details/42525001
http://www.cnblogs.com/dolphin0520/p/3811437.html#3480842原文链接: javacodegeeks 翻译: ImportNew.com - jessenpan
译文链接: http://www.importnew.com/12399.html