关于Java中抽象类和接口的区别(阿里巴巴的电话面试题)

来源:互联网 发布:js过滤对象中字符串 编辑:程序博客网 时间:2024/04/30 02:22

今天早上还在床上,就突然接到阿里巴巴那边的电话面试,当时有点匆忙,被问了几个问题直接被问蒙了,其中有道java中抽象类和接口的区别,当时只答出了2点,而且答得还不是很完整,所以特地Google了一把,说实话这些在书上还真难看到。


区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。

区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。

区别三,继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。

区别四,在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。


如下给出两者的简单对比表格。

 

接口

抽象类

多继承

支持

不支持

类型限制

没有

有,只能是引用类型

方法实现

继承类型中必须给出方法实现

继承类中可以不给出

扩展性

比较麻烦

相对比较灵活

多层继承

比较麻烦,需要借助虚函数

比较灵活


以上资料来自:http://www.cnblogs.com/roky/archive/2008/02/21/1076332.html


还有道题,java有多少种设计模式。




/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------*/


正解:23种。

一:创建型模式
工厂方法,抽象工厂,建造者模式,单态模式,原型模式
二:构造型模式
适配器模式,桥接模式,组合模式,装饰模式,外观模式
享元模式,代理模式
三:行为型模式
责任链模式,命令模式,解释器模式,迭代器模式,中介者模式
备忘录模式,观察者模式,状态模式,策略模式,模版方法,访问模式


1 0
原创粉丝点击