最适合网络开发者的网站

PHP 教程

PHP 主页 PHP 简介 PHP 安装 PHP 语法 PHP 注释 PHP 变量 PHP 回显/打印 PHP 数据类型 PHP 字符串 PHP 数字 PHP 数学 PHP 常量 PHP 运算符 PHP 如果...否则...Elseif PHP 开关 PHP 循环 PHP 函数 PHP 数组 PHP 超全局变量 PHP 正则表达式

PHP 形式

PHP 表单处理 PHP 表单验证 需要 PHP 表单 PHP 表单 URL/电子邮件 PHP 表单完成

PHP 先进的

PHP 日期和时间 PHP 包含 PHP 文件处理 PHP 文件打开/读取 PHP 文件创建/写入 PHP文件上传 PHP 饼干 PHP 会话 PHP 过滤器 PHP 过滤器高级 PHP 回调函数 PHP 的 JSON PHP 异常

PHP 面向对象

PHP 什么是OOP PHP 类/对象 PHP 构造函数 PHP 析构函数 PHP 访问修饰符 PHP 继承 PHP 常量 PHP 抽象类 PHP 接口 PHP 特征 PHP 静态方法 PHP 静态属性 PHP 命名空间 PHP 可迭代对象

MySQL 数据库

MySQL 数据库 MySQL 连接 MySQL 创建数据库 MySQL 创建表 MySQL 插入数据 MySQL 获取最后一个 ID MySQL 插入多个 MySQL 已准备 MySQL 选择数据 MySQL 哪里 MySQL 排序依据 MySQL 删除数据 MySQL 更新数据 MySQL 限制数据

PHP XML

PHP XML 解析器 PHP SimpleXML 解析器 PHP SimpleXML - 获取 PHP XML 扩展 PHP XML DOM

PHP - 阿贾克斯

AJAX 简介 AJAX PHP AJAX 数据库 AJAX XML AJAX实时搜索 AJAX 民意调查

PHP 例子

PHP 示例 PHP 编译器 PHP 测验 PHP 练习 PHP 证书

PHP 参考

PHP 概述 PHP 数组 PHP 日历 PHP 日期 PHP 目录 PHP 错误 PHP 异常 PHP 文件系统 PHP 过滤器 PHP FTP PHP 的 JSON PHP 关键字 PHP 库 PHP 邮件 PHP 数学 PHP 杂项 PHP MySQLi PHP 网络 PHP 输出控件 PHP 正则表达式 PHP 简单 XML PHP 流 PHP 字符串 PHP 变量处理 PHP XML解析器 PHP 压缩文件 PHP 时区

PHP。初学者课程

尿素

PHP OOP-抽象类


PHP - 什么是抽象类和方法?

抽象类和方法是指父类具有命名方法,但需要其子类来完成任务。

抽象类是包含至少一个抽象方法的类。抽象方法是已声明但未在代码中实现的方法。

抽象类或方法的定义如下: abstract 关键词:

句法

<?php
抽象类 ParentClass {
抽象公共函数someMethod1();
抽象公共函数 someMethod2($name,$color);
抽象公共函数 someMethod3() : string;
}
?>

从抽象类继承时,子类方法必须使用相同的名称以及相同或限制较少的访问修饰符来定义。因此,如果抽象方法定义为受保护的,则子类方法必须定义为受保护的或公共的,但不能定义为私有的。此外,必需参数的类型和数量必须相同。但是,子类还可以有可选参数。

因此,当子类从抽象类继承时,我们有以下规则:

  • 子类方法必须用相同的名称定义,并重新声明父类抽象方法
  • 子类方法必须使用相同或限制较少的访问修饰符来定义
  • 必需参数的数量必须相同。但是,子类可能还具有可选参数

让我们看一个例子:

例子

<?php
// 父类
抽象类汽车{
公共$名称;
公共函数 __construct($name) {
$this-&gt;名称 = $名称;
  }
抽象公共函数 intro() : 字符串;
}

// 子类
奥迪类扩展了汽车{
公共函数 intro() : 字符串 {
return "选择德国品质!我是$this-&gt;name!";
  }
}

沃尔沃类扩展了汽车{
公共函数 intro() : 字符串 {
返回“自豪成为瑞典人!我是$this-&gt;name!”;
  }
}

雪铁龙类延伸汽车{
公共函数 intro() : 字符串 {
return "法式奢华!我是$this-&gt;name!";
  }
}

// 从子类创建对象
$audi = new audi("奥迪");
回声$audi-&gt;intro();
回显<br> “;

$volvo = new volvo("沃尔沃");
回声 $volvo-&gt;intro();
回显<br> “;

$citroen = new citroen("雪铁龙");
回声$citroen-&gt;intro();
?>
亲自尝试 »

示例解释

Audi、Volvo 和 Citroen 类继承自 Car 类。这意味着 Audi、Volvo 和 Citroen 类由于继承关系可以使用 Car 类中的公共 $name 属性以及公共 __construct() 方法。

但是,intro() 是一个抽象方法,应该在所有子类中定义,并且它们应该返回一个字符串。


PHP - 更多抽象类示例

让我们看另一个抽象方法有一个参数的例子:

例子

<?php
抽象类 ParentClass {
// 带有参数的抽象方法
抽象保护函数前缀名称($name);
}

ChildClass 类扩展了 ParentClass 类 {
公共函数前缀名称($name){
如果 ($name == "John Doe") {
$prefix = "先生";
} elseif ($name == "Jane Doe") {
$prefix = "夫人";
} 别的 {
$前缀 = “”;
    }
返回“{$prefix} {$name}”;
  }
}

$class = 新的 ChildClass;
echo $class-&gt;prefixName("John Doe");
回显<br> “;
echo $class-&gt;prefixName("Jane Doe");
?>
亲自尝试 »

我们来看另一个例子,其中抽象方法有一个参数,并且子类有两个可选参数未在父类的抽象方法中定义:

例子

<?php
抽象类 ParentClass {
// 带有参数的抽象方法
抽象保护函数前缀名称($name);
}

ChildClass 类扩展了 ParentClass 类 {
// 子类可以定义父类抽象方法中没有的可选参数
公共函数前缀名称($name,$separator =“。”,$greet =“亲爱的”){
如果 ($name == "John Doe") {
$prefix = "先生";
} elseif ($name == "Jane Doe") {
$prefix = "夫人";
} 别的 {
$前缀 = “”;
    }
返回“{$greet} {$prefix}{$separator} {$name}”;
  }
}

$class = 新的 ChildClass;
echo $class-&gt;prefixName("John Doe");
回显<br> “;
echo $class-&gt;prefixName("Jane Doe");
?>
亲自尝试 »