相同:
1.都是不能实例化
2.都拥有抽象方法,也就是他们都是抽象的
不同:
本质区别:抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!
1. 继承角度
一个具体类只能继承一个抽象类,但一个具体类可以实现多个接口。(java多继承)
2. 抽象类与抽象方法
含抽象方法的类必须被声明为抽象类,但抽象类不一定必须有抽象方法。
抽象类的抽象方法必须被子类实现。子类可以有选择地重写需要的非抽象方法,但是接口的实现类必须实现接口的所有方法。
另外Java抽象类可以提供某些方法的部分实现,而Java接口不可以。
3. 成员变量
接口必须是公开的(public)的,不能由私有(private)的方法或变量;
接口中的变量必须是public static final(接口中一般不定义数据成员),且必须给其初值,实现类中不能重新定义,也不能改变其值;
抽象类可以有私有方法或私有变量,抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
4. 设计理念不同
其实abstract class表示的是”is-a”关系(塑料碗和瓷碗都是碗),interface表示的是”like-a”(像雾像风又像雨)关系,组合起来就是”has a”关系(智能手机继承自手机,同时实现了闹钟、MP3等各种功能)。
简单地说,接口是模块之间的协议,一些模块用于实现某些协议的具体动作,另外一些模块只针对接口编程,这样实现低耦合。
抽象类主要是用于继承设计的,主要用于模板设计!
经典的设计模式:缺省/默认适配模式(Default Adapter)
声明类型的工作仍然由Java接口承担,但是同时给出一个Java抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类。也就是说在层次结构中,Java接口在最上面,然后紧跟着抽象类,哈,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。
在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。
分享到:
相关推荐
11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别.zip11.java接口和抽象类的区别....
抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...
主要介绍接口与抽象类的区别,为那些困惑的人指点迷津。
接口与抽象类的区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从...
抽象类和接口的区别
C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例
4.实现抽象类和接口的类必须实现其中的所有方法。 抽象类中可以有非抽象方法。接口中则不能有实现方法。如果接口或者抽象类的子类不想实现则继续携程一个抽象方法 5.接口中定义的变量默认是public static final ...
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,...
10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和抽象类的相似性.zip10.java接口和...
Java中的类、抽象类和接口的区别和联系
Java 接口和抽象类
java利用接口和抽象类改写求圆的面积和梯形的面积.docx
NULL 博文链接:https://wwhhll.iteye.com/blog/760051
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
抽象类和接口 区别分析抽象类和接口 区别分析
抽象类和接口实验报告
1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类; 3.理解接口与抽象类的区别。