美文网首页
php高级篇(1)——抽象类

php高级篇(1)——抽象类

作者: 小光og | 来源:发表于2017-06-10 19:43 被阅读0次

定义 :

定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。

注意:

1. 抽象方法实现的访问级别必须小于抽象类中的方法

2. 不能被实例化(不能用new来创建对象)

3. 被生命方法不能包含函数体

4. 扩展类也为抽象类,就不用实现所有的抽象函数

例子:

//shape为图形类,FourSidesShape为正方形,TreeSidesShape为三角形

//include_once("constant.php");

//shape为图形类,FourSidesShape为正方形,TreeSidesShape为三角形

abstract class Shape {

abstract public function getArea();

abstract public function getLength();

public function getType(){

}

}

class FourSidesShape extends Shape{

private $width;

private $heigth;

public function __construct($width,$height){

$this->width = $width;

$this->height = $height;

}

public function getArea(){

$area = $this->width * $this->height;

echo "面积:".$area;

}

public function getLength(){

$length = ($this->width+$this->height)*2;

echo "周长:".$length;

}

}

abstract class TreeSidesShape extends Shape{

}

/*试着new 一个 Shape,是否成功

$shape = new Shape();

*/

/*

1 试着注释掉 getArea方法

2 将getArea方法变为私有

3 将Shape类中getArea加一个空函数体

4 注释掉 Shape类中的 getArea 和 getLength方法

5

*/

/* 成功例子*/

$fShape = new FourSidesShape(10,20);

$fShape->getArea();

// $sShape = new TreeSidesShape();

相关文章

  • php高级篇(1)——抽象类

    定义 : 定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明...

  • PHP抽象类

    PHP抽象类应用的定义:abstract class ClassName {} PHP抽象类应用要点: 1.定义...

  • abstract关键字

    抽象类 PHP5 支持抽象类和抽象方法。抽象类不能被实例化,必须先继承该抽象类,然后实例化该抽象类的子类。抽象类中...

  • 一.PHP基本架构

    原文github地址 1.PHP概述 1.1 PHP的历史发展 1995年由Lerdorf创建PHP,高级脚本语言...

  • php高级篇(2)——接口

    定义 : 接口是一种类似于类的结构,可用于实现类所必须实现的方法。多处用于差异化有些需要非固定动作,而且对于某些类...

  • 2019-07-13

    php高级课程简介。

  • php之接口、抽象类

    php之接口、抽象类 首先,看看什么是抽象类和接口 抽象类: 定义为抽象的类不能被实例化.任何一个类,如果它里面至...

  • 高级1、PHP 函数重载

    对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。 因为函数重载必须满足两个条件: 1、函数参数的个数不...

  • Kotlin学习之抽象类和接口

    Kotlin学习之抽象类和接口 抽象类和接口是面向对象的高级特性。 一、抽象类 类和其中的某些成员可以声明为abs...

  • php——抽象类

    抽象类的特性: 1、定义为抽象的类不能被实例化。2、如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声...

网友评论

      本文标题:php高级篇(1)——抽象类

      本文链接:https://www.haomeiwen.com/subject/flkcqxtx.html