登录 |  注册 |  繁體中文


接口和抽象类有什么区别

分类: 其它 颜色:橙色 默认  字号: 阅读(1109) | 评论(0)

一、你选择使用接口和抽象类的依据是什么?

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。


二、接口和抽象类的概念不一样:

  接口是对动作的抽象,表示这个对象能做什么,对类的局部行为进行抽象。

  抽象类是对根源的抽象,表示这个类是什么,对类的整体进行抽象,对一类事物的抽象描述。

  (

           比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

          人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

       )

 

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

 

三、特点和区别:

抽象类特点:

1、抽象类绝对不能被实例化

2、如果类中有一个抽象方法,那么该类就必须定义为抽象类;但反过来,抽象类里并不一定要有抽象方法。另外,抽象类里也可以有普通方法

3、抽象方法不能有方法体。即abstract function abc();------后面不能加大括号

4、一个类继承了某个抽象类,那么,它必须实现抽象类中所有的抽象方法(除非,它将方法声明为抽象的,相当于抽象类继承了抽象类)。

接口的特点

(1)使用接口(interface),那么实现这个接口的类就必须实现这个接口中定义的全部方法,接口中的方法不需要定义方法的具体内容,即,没有方法体。

(2) 接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样。

(3) 类可以实现多个接口(用逗号隔开)

区别

1、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。

2、接口没有构造函数,抽象类可以有构造函数。



上一篇:WebSocket   下一篇:前端笔记

姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部