PHP 面向对象 抽象类

使用 abstract 关键字申明抽象类和抽象方法。抽象类不能被实例化,只能被其他类继承。

abstract class A
{
    // 抽象方法没有函数体,即具体实现

    abstract protected function fun1();

    abstract protected function fun2($num);

    // 普通方法,即非抽象方法

    public function fun3()
    {
        echo __FUNCTION__;
    }
}

class B extends A
{
    // 子类必须定义抽象类中的所有抽象方法

    public function fun1()
    {
        echo __FUNCTION__;
    }

    // 子类方法的访问控制,必须和抽象类中方法的访问控制一致,或更为宽松

    // 参数必须一致,但子类可以定义父类方法中不存在的可选参数

    public function fun2($num, $num2='0')
    {
        echo $num;
    }
}

// 抽象类不能被实例化

$b=new B();

$b->fun2(1);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go语言中的Array、Slice、Map和Set使用详解

Array(数组) 内部机制 在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元...

33880
来自专栏机器学习入门

LWC 60:736. Parse Lisp Expression

LWC 60:736. Parse Lisp Expression 传送门:736. Parse Lisp Expression Problem: You a...

23370
来自专栏walterlv - 吕毅的博客

Roslyn 语法树中的各种语法节点及每个节点的含义

2018-07-18 12:24

25810
来自专栏大闲人柴毛毛

剑指offer——面试题9计算斐波纳切第n个数

/** * 计算斐波纳切数列的第n个值 * @author chibozhou * */ public class Fibonacci { /** ...

38670
来自专栏Albert陈凯

函数柯里化(Currying)和偏函数应用(部分应用函数)(Partial Application)的比较

【名词解释】Currying:因为是美国数理逻辑学家哈斯凯尔·加里(Haskell Curry)发明了这种函数使用技巧,所以这样用法就以他的名字命名为 Curr...

38850
来自专栏向治洪

Swift基础语法

本文来自Swift中文开发组,感谢翻译者的分享。 本文将分几部分对Swift对iOS的语法做讲解。本文为第一节,主要讲解基础语法。 常量和变量 常量和变量把一个...

19860
来自专栏向治洪

Swift基础语法(常量变量、数据类型、元组、可选、断言)

本文来自Swift中文开发组,感谢翻译者的分享。 本文将分几部分对Swift对ios的语法做讲解。本文为第一节,主要讲解基础语法。 常量和变量 常量和变量把一个...

20490
来自专栏Java帮帮-微信公众号-技术文章全总结

05-02总结方法,数组(一维)

/* 练习题(1) 数组遍历:就是依次输出数组中的每一个元素。 注意:数组提供了一个属性length,用于获取数组的长度。 格式:数组名.lengt...

36370
来自专栏Java帮帮-微信公众号-技术文章全总结

【选择题】Java基础测试七

【选择题】Java基础测试七 86.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?( B ) A、ArrayList m...

65430
来自专栏前端小作坊

Javascript 原型链

本来想写一篇“如何用JS实现面向对象”,发现自己对prototype原型链还是有很多的不理解的地方。先看一张原型链关系图:

13710

扫码关注云+社区

领取腾讯云代金券