search
Homephp教程php手册面向对象的PHP
面向对象的PHPJun 13, 2016 am 10:53 AM
phpSeveralFunctionobjectintroducetimeoflanguageFor

许多语言本身就是面向对象的,而PHP用了几年的时间才引入这类功能。很多人认为,以前试图向该语言添加面向对象的功能都是失败的。尽管版本4提供了非常基本的面向对象程序设计(OOP)概念,但是还存在一些不足,包括:

·        非正式的对象引用方法

·        无法设置字段和方法的作用域(公共、私有、保护、抽象)。

·        没有命名构造函数和标准约定

·        缺少对象的析构函数。

·        缺少对象复制特性。

·        缺少对接口的支持。

幸好PHP5消除了上述所有缺点,对最初的实现进行了本质的改进,还增加了很多新的OOP特性。

OOP的好处

   面向对象程序设计的诞生是开发范型一次的重大改变,编程的注意力重新从应用程序的逻辑回到其数据上来,换句话说,OOP将焦点从编程的过程性事件转向最终建模的真实体。这使得应用程序更接近于我们周围的现实世界。

封装

   程序员一般都有很强的好奇心,我们喜欢把东西拆开,了解里面的所有小零件如何在一起工作。虽然能得到精神上的满足,但深入地了解事物的内部工作原理并是不必要的,例如,成百万人每天都在使用计算机,但是很少有人真正了解它的工作原理,同样汽车,电视及许多司空见惯的东西都是如此,通过使用接口就能忽略其内部结构。例如,你知道旋转收音机的旋转钮就可以换台,但你可能不知道实际上这是在告诉收音机要监听使用特定的频率传输的信号,这是通过解调器完成的,即便不理解这个过程,也不影响使用收音机,因为接口隐藏了这些细节,通过众所周知的接口将用户与实际应用程序的内部工作原理分开,这种方法称为封装。

    面向对象程序设计通过建立定义良好(well-defined)的接口(每个应用程序的组件都可以访问这个接口),使隐藏应用程序内部工作原理的概念得到进一步提升。具有OOP思维的开发人员不会陷入大量的细节之中,而会设计出独立于其他组件紧密地结合或耦合(couple)定义良好的接口进行交互的组件称为对象(object)。对象是通过一个称为类(class)的模板创建的,类用于定义某个实体所应具有的数据和行为,这种方式有以下优点:

·        开发人员可以修改应用程序的实现,而不会影响到对象用户,因为用户只通过对象的接口与对象交互。

·        会减少可能出现的用户错误,因为对用户与应用程序的交互有所控制。

继承   www.2cto.com

   在我们周围的环境中,许多事物(包括人)都可以使用一组良好定义的规则来建模。我们来看员工这一概念,所有员工都有一组共同的性质,例如:姓名、员工号、工资。但是,有许多不责骂类型的员工,如职员,主管、出纳和首席执行官等。每一类员工都拥有一般员工定义中所定义的性质的超集。用面向对象的术语来说,这些员工类型继承(inherit)了一般员工定义,包括此定义中的所有性质和行为,接下来,每个特定的员工类还可以被另一个更明确的类所继承,例如:“职员”类型可以被白班职员和夜班职员继承,白班职员和夜班职员都会继承员工定义和职员定义中的所有性质。基于这个概念,可以再创建一个“人”类,使“员工”类成为“人”类的一个子类,其结果是,员工类及其所有派生类(职员、出纳、CEO等)都会立即继承“人”类中定义的所有性质和行为。

    面向对象开发方法建立在继承概念的基础之上,这种策略提高了代码的可重用性,因为它使得人们能够在多个应用程序中使用设计良好的类[所谓设计良好(well-designed),是指这些类足够抽象,从而可以重用]。

多态

   多态(polymorphism)是来自希腊语的一个术语,原意是“有多种形态”。简单地讲,多态是指OOP能够根据使用类的上下文来重新定义或改变类的性质或行为。

    还是用例子来解释,假设在员工类的定义中有一个“签到”和行为,对于职员员工而言,这个行为可能具体为使用时钟来打卡,对于其类型的员工而言,例如“程序员”签到可能过网络进行,虽然两个类都从员工类继承到这个行为,但具体的实现要依赖于实现“签到”的上下文,这种就是多态的强大这处

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
使用PHP的json_encode()函数将数组或对象转换为JSON字符串使用PHP的json_encode()函数将数组或对象转换为JSON字符串Nov 03, 2023 pm 03:30 PM

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,已经成为Web应用程序之间数据交换的常用格式。PHP的json_encode()函数可以将数组或对象转换为JSON字符串。本文将介绍如何使用PHP的json_encode()函数,包括语法、参数、返回值以及具体的示例。语法json_encode()函数的语法如下:st

源码探秘:Python 中对象是如何被调用的?源码探秘:Python 中对象是如何被调用的?May 11, 2023 am 11:46 AM

楔子我们知道对象被创建,主要有两种方式,一种是通过Python/CAPI,另一种是通过调用类型对象。对于内置类型的实例对象而言,这两种方式都是支持的,比如列表,我们即可以通过[]创建,也可以通过list(),前者是Python/CAPI,后者是调用类型对象。但对于自定义类的实例对象而言,我们只能通过调用类型对象的方式来创建。而一个对象如果可以被调用,那么这个对象就是callable,否则就不是callable。而决定一个对象是不是callable,就取决于其对应的类型对象中是否定义了某个方法。如

使用Python的__contains__()函数定义对象的包含操作使用Python的__contains__()函数定义对象的包含操作Aug 22, 2023 pm 04:23 PM

使用Python的__contains__()函数定义对象的包含操作Python是一种简洁而强大的编程语言,提供了许多强大的功能来处理各种类型的数据。其中之一是通过定义__contains__()函数来实现对象的包含操作。本文将介绍如何使用__contains__()函数来定义对象的包含操作,并且给出一些示例代码。__contains__()函数是Pytho

使用Python的__le__()函数定义两个对象的小于等于比较使用Python的__le__()函数定义两个对象的小于等于比较Aug 21, 2023 pm 09:29 PM

标题:使用Python的__le__()函数定义两个对象的小于等于比较在Python中,我们可以通过使用特殊方法来定义对象之间的比较操作。其中之一就是__le__()函数,它用于定义小于等于比较。__le__()函数是Python中的一个魔法方法,并且是一种用于实现“小于等于”操作的特殊函数。当我们使用小于等于运算符(<=)比较两个对象时,Python

详解Javascript对象的5种循环遍历方法详解Javascript对象的5种循环遍历方法Aug 04, 2022 pm 05:28 PM

Javascript对象如何循环遍历?下面本篇文章给大家详细介绍5种JS对象遍历方法,并浅显对比一下这5种方法,希望对大家有所帮助!

Python中如何使用getattr()函数获取对象的属性值Python中如何使用getattr()函数获取对象的属性值Aug 22, 2023 pm 03:00 PM

Python中如何使用getattr()函数获取对象的属性值在Python编程中,我们经常会遇到需要获取对象属性值的情况。Python提供了一个内置函数getattr()来帮助我们实现这个目标。getattr()函数允许我们通过传递对象和属性名称作为参数来获取该对象的属性值。本文将详细介绍getattr()函数的用法,并提供实际的代码示例,以便更好地理解。g

使用Python的isinstance()函数判断对象是否属于某个类使用Python的isinstance()函数判断对象是否属于某个类Aug 22, 2023 am 11:52 AM

使用Python的isinstance()函数判断对象是否属于某个类在Python中,我们经常需要判断一个对象是否属于某个特定的类。为了方便地进行类别判断,Python提供了一个内置函数isinstance()。本文将介绍isinstance()函数的用法,并提供代码示例。isinstance()函数可以判断一个对象是否属于指定的类或类的派生类。它的语法如下

PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块Jul 29, 2023 pm 11:19 PM

PHP代码封装技巧:如何使用类和对象封装可重复使用的代码块摘要:在开发中,经常遇到需要重复使用的代码块。为了提高代码的可维护性和可重用性,我们可以使用类和对象的封装技巧来对这些代码块进行封装。本文将介绍如何使用类和对象封装可重复使用的代码块,并提供几个具体的代码示例。使用类和对象的封装优势使用类和对象的封装有以下几个优势:1.1提高代码的可维护性通过将重复

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.