php面向对象编程:抽象类与接口的区别

来源:互联网 发布:网络小胖眼镜图片 编辑:程序博客网 时间:2024/05/17 04:49

抽象类:

1,一个抽象方法,必须放在抽象类中

2,但一个抽象类中,可以没有抽象方法(其实很少见)。

3,一个下级类继承了上级抽象类,则:

  3.1 要么这个下级类实现上级类中的所有抽象方法;

  3.2要么这个下级类也是抽象类——其实此时可以去实现其中的“部分”(0%~100%)抽象方法

4,下级类实现上级类中的抽象方法的时候,需要满足:

  4.1 访问修饰符的范围不能更小;

  4.2 方法的形参要跟上级类中的对象抽象方法的形参一致。(其实,这里本身就是“继承”并“重写”而已)

接口:

1,接口之间也可以有继承关系

interface  接口2  extends  接口1{ ..... }

2,接口可以进行“多继承”;

3,类实现接口,可以进行“多实现”——其实本质是继承

class  C  implements  接口1,接口2{ .... }

4,一个类实现一个接口,则:

  4.1,要么实现该接口中的所有抽象方法

  4.2,要么自己本身就是抽象类

它们的主要区别:

    1、抽象类是一种不能被实例化的类, 只能作为其他类的父类来使用。 抽象类是通过关键字abstract 来声明的。

       2、抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,抽象方法的格式为:abstract function abstractMethod();

    3、抽象方法没有方法体,该方法天生就是要被子类重写的。

    4、接口是通过 interface 关键字来声明的, 接口中的成员常量和方法都是  public 的, 方法可以不写关键字 public。

    5、接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。

    6、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计 一个上层,通常设计为接口。子类继承抽象类使用 extends,子类实现接口使用 implements。




0 0
原创粉丝点击