前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP面对对象程序设计

PHP面对对象程序设计

作者头像
白胡杨同学
发布2020-04-10 10:14:41
5770
发布2020-04-10 10:14:41
举报
文章被收录于专栏:白胡杨同学

面向对象编程的基本概念

面向对象有两个基本概念:类和对象

  • 类:具有相同功能和特征的对象的抽象,就是类
  • 对象:具有一定功能和特征的单个事物,就是对象
  • 类与对象的关系:对象是类的实例化,类是对象的抽象化。

类的使用

定义一个类

类的定义格式为“修饰符 class类名{类体}”

类体的内容主要有三种:

  1. 成员常量:在类中直接声明的常量被称为成员常量,成员常量是一个不会改变的量,可以使用关键字const来定义
  2. 成员变量:又称成员属性。可以用关键字var来修饰
  3. 成员方法:成员方法通常用来实现类的一个行为,必须与类结合使用。

编写一个Posern的类

代码语言:javascript
复制
<?php
class Person{
    const SCIENTIFIC_NAME="xiao ming"//常量:学名,该属性值不会改变
    var $sex;//性别
    var $age;//年龄
    var $money;//存款
    function income($money){
        $this->money+=$money;
    }
}
?>
实例化对象

在定义一个类后,可以使用“new”运算符来获取一个实例对象:

可以用“->”操作符来访问对象的成员属性和成员方法

同时使用“::”操作符访问静态变量或成员常量

代码语言:javascript
复制
<?php
include 'Person.class.php';
$jack = new Person();
$jack->income(10000);
echo "<p>Jack的存款:".$jack->money;
?>
构造函数

构造函数是一种特殊的方法,主要用来在创建对象初始化对象,即为对象成员变量赋初始值

代码语言:javascript
复制
void__construct()

构造方法的名称和类名也可以相同

代码语言:javascript
复制
<?php
class Preson{
    var $name;//姓名
    var $sex;//性别
    var $age;//年龄
    
    //写法一:
    function __construct($name,$sex,$age){
        $this ->name = $name;
        $this ->sex = $sex;
        $this ->age = $age;
    }
    //写法二:
    function Person($name,$sex,$age){
        $this ->name = $naem;
        $this ->sex = $sex;
        $this ->age =$age;
    }
}
?>
析构函数

析构函数与构造函数相反,析构函数往往用来执行清理善后工作,如内存清理、释放等

代码语言:javascript
复制
void __destruct()
<?php
class Person{
    var $name;//姓名
    var $sex;//性别
    var $age;//年龄
    function __destruct(){
        echo "运行结束,清理内存";
    }
}
?>
$this伪变量

如果在类的内部使用属性或方法,则可以用$this来表示实例化后的具体对象

###面对对象特征——封装

类的封装是通过public、private、protected等关键字来实现的,可以很好地限制类中的属性和方法的访问权限。

public关键字

属性和方法都是公开的,可以在程序中的任何地方被调用,子类可以继承父类的所有公共成员

private关键字

属性和方法都是私有的,只能在其所属的类的内部调用,子类也不可以访问

protected关键字

属性和方法只有子类才能调用,其他类都不能调用。

面向对象特性——继承

extends关键字

使用extends关键字可以继承一个类,不支持多继承,被继承的类交父类,继承的类叫子类。当子类继承父类以后,子类不仅可以拥有自己的属性和方法,还可以拥有父类所有非私有的属性和方法。

final关键字

被final关键字修饰的类或方法是不能被继承的,也不会有子类。 final关键字不能修饰变量

面向对象特征——多态

多态是指在面向对象中能够对同一个接口做出不同的实现。多态主要存在两种形式:

  • 重写:在子类中重写父类的方法,具有相同的方法名字、相同的参数表和相同的返回类型。常见于子类构造方法的重写。
  • 重载:通常是指一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表。

“::”操作符

通常应用于没有生命任何实例的情况下使用类的属性或方法。$this 引用只能在类的内部使用,其引用的属性和方法都是该类拥有的,而“::”可以用在其他场景,主要包括以下3中场景:

  • “parent::”:调用父类的属性。方法和常量
  • “self::”:调用本类中的静态属性、方法和常量、
  • “类名::”:等同于self::

static关键字

被static关键字修饰的成员属性称为静态变量。 被static关键字修饰额成员方法称为静态方法

特殊类

抽象类

抽象类是用abstract关键字声明的,他是一种不能被实例化的类,只能作为其他类的父类来使用。

一个抽象类至少有一个抽象方法,抽象方法没有方法体,且抽象方法后面要连接一个分号。

接口

接口是用interface关键字来定义的,他是一种特殊的抽象类,接口中未实现的方法,即使是空方法,也必须在子类中实现。一个子类只能继承一个父类,却可以实现多个接口。通过implements关键字可以实现接口。

对象的使用

引用对象和克隆对象

在PHP中,通常赋值操作是值传递,如果需要引用一个对象,则需要使用“&”来声明。

克隆对象需要使用clone关键字来实现。

比较对象

  • “==”表示比较两个对象的内容
  • “===”表示比较两个对象的内存地址
  1. 克隆的内容相等,地址不相等
  2. 引用的内容相等,地址也相等
  3. 构造的内容相等,地址不相等

检测对象类型

使用instanceof关键字来判断对象是哪个类型的。

  • 如果一个对象输入一个类,则这个对象一定属于该类的父类,但一定不属于该类的子类;
  • 如果一个类实现了某接口,则这个类的对象也同样属于这个接口。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面向对象编程的基本概念
  • 类的使用
    • 定义一个类
      • 实例化对象
        • 构造函数
          • 析构函数
            • $this伪变量
              • public关键字
                • private关键字
                  • protected关键字
                  • 面向对象特性——继承
                    • extends关键字
                      • final关键字
                      • 面向对象特征——多态
                      • “::”操作符
                      • static关键字
                      • 特殊类
                        • 抽象类
                          • 接口
                          • 对象的使用
                            • 引用对象和克隆对象
                            • 比较对象
                            • 检测对象类型
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档