PHP 面向对象高级:抽象类 1 个改进

一、抽象类语法

abstract class 类名{
    public $name;
    abstract 访问权限修饰符 function 方法名1();
    abstract 访问权限修饰符 function 方法名2();
    访问权限修饰符 function 方法名3(){
        ... ... ;
    }
}

1、类中至少有一个抽象方法
2、抽象方法不允许有{ }
3、抽象方法前面必须要加abstrac

二、抽象方法语法

abstract 访问权限修饰符 function 方法名1(参数列表);
abstract 访问权限修饰符 function 方法名2(参数列表);

1、不能被实例化,只能被继承
2、继承的派生类当中要把所有抽象方法重载才能实例化

三、基本概念

  • 只要一个类里面有一个方法是抽象方法,那么这个类就必须定义为抽象类。

  • 抽象类必须使用“abstract”关键字来修饰。

  • 抽象类中可以包含非抽象方法外的 普通属性、方法。

  • 抽象类中定义的非抽象成员属性和成员方法不需要子类中进行实现,只需实现抽象方法即可。

  • 抽象类中的抽象方法,不能为私有的,不然子类中无法继承。

  • 子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法(父类中的抽象方法),所以还是抽象类,也就不能实例化为对象。

四、代码示例

Man.php

<?php
namespace rock;

abstract class Man
{
    public $name = '写代码的光头强';

    abstract function title();

    protected function demo(){
        echo 321;
    }
}

Wang.php

<?php
namespace rock;
include "Man.php";

class Wang extends Man
{
    public function title(){
        echo '爱写代码的光头强';
    }
}

$obj = new Wang();

$obj->title();//输出:爱写代码的光头强
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!