php面向对象程序设计介绍
作者:PHP隔壁老王邻居 发布时间:2023-05-25 05:31:11
PHP是一种面向对象的编程语言,它允许开发者使用面向对象的编程技术来构建复杂的应用程序。下面是一些关于PHP面向对象编程的讲解:
类与对象
类是一种用于定义对象的蓝图,它描述了对象的属性和方法。对象则是类的一个实例,它具有类中定义的属性和方法。 在PHP中,使用class
关键字来定义一个类,例如:
<?php
class Person {
public $name;
public $age;
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
上面的代码定义了一个名为Person
的类,它有两个属性$name
和$age
,和一个构造函数__construct()
,以及一个方法sayHello()
。 我们可以使用new
关键字来创建一个类的实例,例如:
<?php
$person1 = new Person("John", 30);
上面的代码创建了一个Person
类的实例$person1
,并将其属性$name
设为John
,属性$age
设为30
。 我们可以使用箭头符号->
来调用对象的属性和方法,例如:
<?php
echo $person1->name; // 输出 "John"
$person1->sayHello(); // 输出 "Hello, my name is John"
访问控制
PHP提供了三种访问控制关键字来限制类的属性和方法的访问权限,它们分别是public
、protected
和private
。
public
:公共的属性和方法可以被类的实例、类的子类和其他代码访问。protected
:受保护的属性和方法可以被类的实例和类的子类访问,但不能被其他代码访问。private
:私有的属性和方法只能被类的实例访问,不能被类的子类和其他代码访问。 例如:
<?php
class Person {
public $name;
protected $age;
private $email;
function __construct($name, $age, $email) {
$this->name = $name;
$this->age = $age;
$this->email = $email;
}
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
protected function getAge() {
return $this->age;
}
private function getEmail() {
return $this->email;
}
}
上面的代码定义了一个Person
类,其中$name
属性是公共的,$age
属性是受保护的,$email
属性是私有的。sayHello()
方法是公共的,getAge()
方法是受保护的,getEmail()
方法是私有的。
继承
继承是面向对象编程的重要概念之一,它允许我们创建一个新的类,并从一个已有的类中继承属性和方法。继承可以减少代码的重复,增强代码的可维护性和可扩展性。 在PHP中,使用extends
关键字来继承一个类,例如:
<?php
class Student extends Person {
public $major;
function __construct($name, $age, $email, $major) {
parent::__construct($name, $age, $email);
$this->major = $major;
}
public function sayHello() {
echo "Hello, my name is " . $this->name . " and I'm a student.";
}
}
上面的代码定义了一个Student
类,它继承自Person
类,并添加了一个$major
属性。它还重写了sayHello()
方法,以便在输出中添加学生的身份信息。 在子类的构造函数中,我们可以使用parent::__construct()
来调用父类的构造函数,以便初始化继承的属性。
多态
多态是面向对象编程的另一个重要概念,它允许我们使用一个基类类型的变量来引用子类对象,从而实现代码的通用性和灵活性。 在PHP中,多态可以通过类型提示和抽象类来实现。 类型提示是一种语法,它允许我们在函数或方法的参数中指定参数的类型,从而限制参数的类型,并提高代码的可读性和可维护性。例如:
<?php
function sayHello(Person $person) {
$person->sayHello();
}
上面的代码定义了一个sayHello()
函数,它接受一个Person
类型的参数。由于Student
类继承自Person
类,所以我们可以将一个Student
类的实例作为参数传递给sayHello()
函数。 抽象类是一种特殊的类,它不能被实例化,只能被用来继承。抽象类中可以定义抽象方法,这些方法没有具体的实现,只是用来规定子类必须实现的方法。例如:
<?php
abstract class Shape {
abstract public function area();
}
class Rectangle extends Shape {
private $width;
private $height;
function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function area() {
return $this->width * $this->height;
}
}
上面的代码定义了一个抽象类Shape
,它有一个抽象方法area()
。Rectangle
类继承自Shape
类,并实现了area()
方法。 我们可以使用多态来实现一个通用的计算面积的函数,例如:
<?php
function getArea(Shape $shape) {
return $shape->area();
}
$rectangle = new Rectangle(10, 20);
echo getArea($rectangle); // 输出 "200"
上面的代码定义了一个getArea()
函数,它接受一个Shape
类型的参数,并调用该参数的area()
方法来计算面积。我们可以将一个Rectangle
类的实例作为参数传递给getArea()
函数。
来源:https://blog.csdn.net/weixin_39934453/article/details/129749378
猜你喜欢
- 最近在研究网页的切片算法,很可能很多人不知道什么是切片算法,其实这是一种面向搜索引擎的网页分块、切片的原理,目前随着工作的深入,逐渐碰到了各
- XML的未来 现在你已经知道XML。确实,结构有点复杂,而且DTD有各种可以定义文档可以包含的内容的选项。但还不只这些。考虑一个数据交换对其
- 把你想加密的文档的源代码拷贝到下面的文本框内,按下生成按钮就可以得到一段加密了的页面代码,把代码复制到新的页面就可以了. [注意:可重复加密
- 在表中有两个字段:id_no (varchar) , in_date (datetime) ,把in_date相同的记录的in_date依次
- 实现功能QuestType 1->查询语句, 2->更新语句, 3->删除语句, 4->插入语句<
- 阅读Chapter 1 清单Chapter 2 标题总览:不但所有网页都需要有标题,而且如果标记正确的话,他们能为网页设计和易用性
- 随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高。操作系统的稳定对数据库来说是十分紧要的,在数据库可操作
- Set objTextStream=FileSystemObject.CreateTextFile(Filename,[Overwrite]
- 首先声明,在这组里我是个绝对的菜鸟。再次声明,小爝这个菜鸟在“网页设计”这个圈里混了快1年了。 摘要:我知道我有多少底,所以我在总结我的成长
- 先由exp把数据卸出到文件系统, 产生一个.dmp文件, 然后必要时再由imp将数据装入数据库. 对于一般中小型数据库来说, 全数据库的ex
- 联合结果集 新建临时工数据表 代码如下:CREATE TABLE T_TempEmployee (FIdCardNumber VARCHAR
- 最近发现数据库服务器压力很大,CPU经常达到100%。查看进程,发现有大量的sp_cursorclose;1进程信息。网上查了下,出现sp_
- QZONE平台的相册功能为保证加载速度一直以来以简洁的图片排列查看模式呈现相片,随着市场上各类相册产品推陈出新,用户越来越强烈的要求个人相册
- vbscript脚本中,fso对象CreateTextFile方法调用时可能会报“无效的过程调用或参数”错误,在使用ASP生成静态页面时,如
- (一) 常用的CSS命名规则:头:header内容:content/container尾:footer导航:nav侧栏:sidebar栏目:
- 我很久前在YAHOO上扣的代码,兼容性很好,在Windows下的主流浏览器中可以正常运行。大家先不要急着下载代码,你随时都可以下,我们来分
- 本文主要介绍的是MySQL慢查询分析方法,前一段日子,我曾经设置了一次记录在MySQL数据库中对慢于1秒钟的SQL语句进行查询。想起来有几个
- 我们一般采用photoshop等做图工具制作电视扫描线效果图片:首先做一个黑白相间的图案,然后用这个图案进行填充,再调整图层的模式或者透明度
- 阅读上一篇:FrontPage2002简明教程七:HTML在FrontPage中的应用 FrontPage 2002比起以前版本的FronP
- 提到SQL Server 2005证书,很多人可能以为它只是用来在传输数据的时候起到加密作用的,但在深入了解后,你会发现它的用处还有很多。