0

0

php面向对象简单概括

WJ

WJ

发布时间:2020-05-29 10:55:06

|

2639人浏览过

|

来源于CSDN

转载

基本知识

类:具有相同属性或方法的一类集合体。比如雪佛兰汽车是一个雪佛兰汽车类,奔驰汽车是一个奔驰汽车类,宝马汽车是一个宝马汽车类,而这三个类又是汽车大类的子类。
对象:类的一个具体实现,比如宝马Q5就是宝马汽车类的一个具体实现。对象地使用是放在内存中的。一下让我们了解一下对象在内存中的分配

5.png

使用面向对象,就是灵活地使用以上两个知识点。让我们来创建和使用类与对象

<?php
    /**
    *新建一个类
    */
    class newClass{        public $a;        public $b;        public function funA(){            echo "I am function A";
        }        public function funB(){            echo "I am function B";
        }
    }    /**
    *使用类创建对象
    */
    $opt=new newClass();
    $opt->a="opt";//将opt对象中的a属性赋值为opt
    $opt->funA();//打印出"I am function A"?>


修饰符:在定义类与类中的属性时,我们可以使用如下三个修饰符,若不加,则默认为public
public:权限最大
protected:权限范围在其本身与其子类
private:权限范围仅在其本身
构造函数与析构函数:在我们对类实例化创建对象时,往往需要对对象进行初始化,这时,我们就需要在类中定义一个构造方法。当我们使用完对象时,就需要释放对象,以减少内存的使用,这时我们就需要使用析构方法。
在php中我们使用__construct()方法与__destruct(),如下代码

<?php
class newClass{
    public $a;
    public $b;
    public function __construct($a,$b){
        $this->a=$a;
        $this->b=$b;
        echo "我是构造函数";
    }
    public function __destruct(){
        echo "我是析构函数";
    }
}
?>

封装性

当我们开发一些重要的程序模块时,常常不希望别人能轻易访问这些程序模块的数据,因此需要对这些数据进行封装。这时我们要进行数据的访问控制,常常使用private关键字来对这些属性与方法进行封装。
如下:

<?php
class privateClass
{
    private $a;
    private $b;
    private function privateFun()
    {
        echo "我是封装的方法";
    }
} ?>

这样,当我们创建对象时就不能调用私有的属性与方法。但是我们可以通过使用魔术方法来对这些私有属性与方法进行访问。
__set()与__get()的使用
通过__set()方法我们可以通过对象直接设置成员属性值
通过__get()方法我们可以通过对象直接获取成员属性值

<?php
class setClass
{        
     private $a;        
    private $b="ww";        
    public function __set($oldValue,$newvalue){ 
        $this->$oldValue=$newvalue;
    }        
    public function __get($newvalue){            
        return $newvalue;
    }
}
    $opt= new setClass();
    $opt->a="sss";//直接设置私有属性值
    echo $opt->b;//直接读取私有属性值
?>

__isset()与__unset()的使用
通过__isset()直接查看对象中私有属性是否存在
通过__unset()直接删除对象中的私有属性

<?php
class issetClass
{
    private $a;
    private $b = 'www';
    function __isset($privateName)
    {
        if (isset($privateName)) {
            return 1;
        } else {
            return 0;
        }
    }
    function __unset($privateName)
    {
        echo "销毁" . $privateName;
    }
}
$opt = new issetClass();
echo isset($opt->$b);
var_dump(unset($opt->$b));?>

继承性

立即学习PHP免费学习笔记(深入)”;

当我们编写多个类时,常常多个类具有相同的属性与方法,为了简化代码我们引入了继承的概念,子类可以继承父类的一些属性与方法,减少了冗余代码地编写。

如何编写继承类
我们使用关键字extends来编写子类

<?php
    class parentClass{
    }    
    class childClass extends parentClass{
    }    
?>

如上,childClass是parentClass的子类,php仅支持单继承,即一个子类只有一个父类,但父类可以有多个子类。

重写父类方法
当父类中的方法不能满足子类的使用时我们可以重写父类方法。但当我们又想在子类使用父类的方法时,我们可以使用如下语法:parent::方法名几个重要的关键字

3.1 final

final可以修饰类与方法,不能修饰成员属性;
被final修饰的类不能继承,而用final修饰的方法在子类中不能被重写

3.2 static

static可以修饰成员属性与成员方法,不能修饰类;
使用static修饰的成员与方法可以通过类直接使用,使用如下语法:类名::\$属性名或方法名();
在类中使用时通过如下语法:self::\$属性名或方法名.

3.3 const

换物网站源码
换物网站源码

一个基于ASP.NET+MSSQL实现的网站源码,包含一个网站的后台管理、前面展示、留言等常用功能,简单而功能完整,具有相当的学习意义。 采用面向对象模式开发,暂时没有超级管理员管理后台

下载

在类中声明常量使用const,而不是使用define();
比如 const TT=90当使用常量时直接使用如下语法self::常量名

3.4 instanceof

使用该关键字可以检测某个实例是否是某个类的实例。

3.5 trait

php只能进行单继承,但它同时提供了另类方式来进行代码复用,解决单继承问题。
如下

<?php

trait testA
{
    function a()
    {
    }
}

trait testB
{
    function b()
    {
    }
}

class testC
{
    use testA, testB;

    function c()
    {
    }
} ?>

抽象技术

用abstract关键字修饰的方法与类称为抽象方法或抽象类。
声明抽象类与抽象方法

<?php
abstract class testClass
{
$a;
$b;
    abstract function testFun();
    abstract function testFun1();
    public function optFun()
    {
        echo "抽象类中的抽象方法";
    }//抽象类可以有非抽象方法
}
class childClass extends testClass
{
    function testFun()
    {
        echo "子类中实现抽象方法";
    }
    function testFun1()
    {
        echo "子类实现抽象方法";
    }
}
abstract child1Class extends testClass
{
}//子类是抽象方法可以不实现父类的抽象方法?>

抽象技术为子类的声明提供了一种规范,限制了类的实例化(抽象类不能实例化)。

接口技术

接口是一种特殊的抽象类,接口中只能声明抽象类与常量
声明接口使用interface,实现接口使用implements,修饰符只能是默认的public;
一个子类可以继承多个接口,同时继承一个父类

<?php
interface newInterface
{
    const V = 12;
    abstract function fun1();
    abstract function fun2();
}
interface newInterface1
{
    abstract function fun3();
    abstract function fun4();
}
class parentClass
{
    function fun5()
    {
        echo "fun5";
    }
}
class optClass extends parentClass implements newInterface, newINterface1
{
    function fun1()
    {
        echo "fun1";
    }
    function fun2()
    {
        echo "fun2";
    }
    function fun3()
    {
        echo "fun3";
    }
    function fun4()
    {
        echo "fun4";
    }
} ?>

多态

在php中多态地实现需要一个类通过多个子类地继承实现,如果一个类的方法在多个子类中重写并实现不同的功能,我们称之为多态。

推荐教程:《PHP教程



相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

119

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

387

2023.10.11

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

58

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

63

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 7万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.5万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 3.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号