接口和实现类的区别

如题所述

接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。

接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。

抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。

接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现多重继承。接口中的成员变量都是static final类型,由于抽象类可以包含部分方法的实现,所以,在一些场合下抽象类比接口更有优势。

相同点:
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。

不同点:
(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
(5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-06
1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数。
4、接口不能进行运算符的重载,类可以进行运算符重载。
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。义母李婆婆不由得笑道:“你这孩子,给娘讲什么笑话,尽哄我开心。等下娘就去刘氏那里先借些米面回来,咱娘儿俩先凑合这一顿。”
看到义母不信,范宇只得劝道:“娘放心和孩儿去镇上,就去那家太白楼,保证娘吃的满意。”
听着范宇不象是在说假话,李婆婆不由得皱眉道:“儿啊,你是不是身上还有能典当的值钱东西?可不要大手大脚的败家,等过些日子,娘给你相个媳妇,你留着过日子岂不是好。什么太白楼,娘是坚决不会去的。”
范宇这时饿的难受,可是看到义母又不肯走,只能耐心解释。
“娘,你可放心吧,孩儿被范连从家中赶出来,现在身无分文,哪有半点值钱的东西。就是身上这身衣服,当了也就没得穿了。我自有本事,不让娘失望就是。”范宇拉着李婆婆的袖子道。
“娘可是打小就看着你长大的,除了会收拾田地,你又有什么挣钱的本事了?”李婆婆好奇的问道。
范宇见义母态度松动,便呵呵一笑道:“现在先不说,等到了太白楼,娘自然就知道。”
李婆婆的脸色一肃道:“你莫不是想要带为娘去吃霸王餐不成?娘劝你不要走这等歪门斜道,而且娘也舍不下这脸面。若是坏了名声,娘可比死还难受,你也不能做此等下作事!”
“放心吧娘。”范宇上前拉着义母李婆婆的手臂道:“孩儿可丢不起这个人,到了太白楼,你自然会知道。”
有心死活也不肯去,可是李婆婆却又真怕范宇去太白楼碰瓷吃白食。犹豫之下,还是决定跟着范宇一同前往。若是这个义子真要做些没
第2个回答  2020-10-06
是多义词,共4个义项
定义数据和操作的类成员(通常为private),这些数据和操作并非为使用该类型的代码所用,
中文名
实现
类别
C++术语
快速
导航
举例
简介
implementation(实现)定义数据和操作的类成员(通常为private),这些数据和操作并非为使用该类型的代码所用。设计良好的类分离了接口和实现,在public部分定义接口,在private部分定义实现,数据成员一般是实现的一部分
举例
例如,istream 和 ostream类管理的IO缓冲区是它们实现的一部分,但并不允许这些类的使用者直接访问。
implements是一个类实现一个接口用的关键字.实现一个接口,必须实现接口中的所有方法。
中文名
使生效;贯彻;执行;实施
外文名
implements
用途
类实现一个接口用的关键字
性质
抽象方法。
快速
导航
详解区别
定义
还有几点需要注意:
(1)接口可以被多重实现(implements),抽象类只能被单一继承(extends)
(2)接口只有定义,抽象类可以有定义和实现
(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)
详解
比如:People是一个接口,他里面有say这个方法。
接口的定义:
public interface People{
public void say();
}
但是接口没有方法体。只能通过一个具体的类去实现其中的方法体。
比如 Chinese这个类,就实现了People这个接口。
相似回答