PHP abstract 抽象类定义与用法示例

PHP抽象类应用要点:

1.定义一些方法,子类必须完全实现这个抽象中所有的方法

2.不能从抽象类创建对象,它的意义在于被扩展

3.抽象类通常具有抽象方法,方法中没有大括号

PHP抽象类应用重点:

1.抽象方法不必实现具体的功能,由子类来完成

2.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义

3.抽象类的方法可以有参数,也可以为空

4.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数

复制代码
//作用:抽象类不实现具体方法,具体方法由子类完成。
//定义抽象类 abstract
abstract class A{
  //abstract 定义抽象类的方法,这里没有花括号。子类必须实现这个抽象方法。
  abstract public function say();
  //抽象类可以有参数
  abstract public function eat($argument);
  //在抽象类中可以定义普通的方法。
  public function run(){
    echo '这是run方法';
  }
}
class B extends A{
  //子类必须实现父类的抽象方法,否则是致命的错误。
  public function say(){
    echo '这是say方法,实现了抽象方法';
  }
  public function eat($argument){
    echo '抽象类可以有参数 ,输出参数:'.$argument;
  }
}
$b =new B;
$b->say();
echo '<br>';
$b->eat('apple');
echo '<br>';
$b->run();
复制代码

运行结果:

这是say方法,实现了抽象方法
抽象类可以有参数 ,输出参数:apple
这是run方法

 

注意:

如果 B 实现了抽象方法 say()、eat() ,那么 B 中 say()、eat() 方法的访问控制不能比 A 中 say()、eat() 的访问控制更严格,也就是说:

(1)      如果 A 中 say()、eat() 声明为 public ,那么 B 中 say()、eat() 的声明只能是 public ,不能是 protected 或 private

(2)      如果 A 中 say()、eat() 声明为 protected ,那么 B 中 say()、eat() 的声明可以是 public 或 protected ,但不能是 private

(3)      如果 A 中 say()、eat() 声明为 private ,嘿嘿,不能定义为 private 哦!( Fatalerror :Abstract function A::say()、eat() cannot be declaredprivate )

posted @   一个人的孤独自白  阅读(524)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2019-06-26 windows10 环境下的amqp安装步骤(图文)
2019-06-26 windows10 环境下的RabbitMQ安装步骤(图文)
2018-06-26 H5+JS生成验证码
点击右上角即可分享
微信分享提示