一、面向对象OOP(Oriented Object Programming)

  1.   面向过程的编程
    • 将要实现的功能描述为一个从一开始到结束的连续的“步骤(过程)”。
    • 一次逐步完成这些步骤。如果步骤比较大,又可以将该步骤细分为子步骤,以此类推。
    • 程序从头开始执行一直到结尾并得到手续的结果。

  2.  面向对象的编程

    • 将要实现的功能描述为一个“对象/物体”完成的任务一一实现也是如此:功能的实现都是依赖于一个实体的“行动/操作/动作”。
    • 完成该最终功能的过程中需要实现其他中间功能(过程)则再去调用其他对象来实现该中间功能
    • 整个系统的完成看做是一个一个对象在发挥各自的“能力”并在内部进行协调有序的调用过程。

  3.  基本概念

    1).类和对象

    • 类:类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
    • 对象:对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。
    • 关系:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

    2).类中成员

      (1)、一般属性

      • 属性是定义在类中的变量
      • 定义:[访问修饰符] $变量名 [= 赋值(初值)];//赋值只能是一个“直接值”或常量
      • 使用形式:对象名->$变量名

      

      (2)、一般方法

      • 属性是定义在类中的函数
      • 定义:[访问修饰符] function 函数名(形参 1, 形参 2, ...) {语句块}
      • 使用形式:对象名->函数名
      • 方法中$thisi关键字有特定含义:表示调用该方法的对象
      • 获取$this的所属类:get_class($this)

      (3)、静态属性

      • 仅隶属于类,通过类名直接使用
      • 定义:[访问修饰符] static $静态属性名 [= 赋值(初值)];//赋值只能是一个“直接值”或常量
      • 使用形式:类名::$静态属性名

      (4)、静态方法

      • 仅隶属于类的函数,通过类名直接调用(新版php可以使用对象名来调用)
      • 定义形式:[访问修饰符] static function 静态方法名(形参 1, 形参 2, ...) {语句块}
      • 使用形式:类名::静态方法名(实参 1, 实参 2, ...);//实参和形参一一对应
      • self关键字:用在方法中,表示该方法所在的类
      • static关键字:代替self关键字的位置,除了具有self作用外,还具有更灵活的作用,那就是所谓的“后期静态绑定”
      • 注意1:$this在静态方法中不能使用
      • 注意2:静态方法不能调用非静态方法
      • 注意3:静态方法不用使用非静态属性

      (5)、类常量

      • 隶属于类的常量
      • 定义形式:const 常量名 = 初值;//必须赋值
      • 使用:类名(对象名)::常量名

    3)、示例:

<?php
//定义一个类:圆
class circle {
const PI = 3.14;//常量PI
private $radius = 1;//半径 //设置半径
public function setRadius($radius) {
$this->radius = $radius;
} //计算圆的面积并返回结果
public function area() {
return circle::PI*$this->radius*$this->radius;
} //返回常量PI的静态函数
public static function displayPI() {
return circle::PI;
// return $this->radius;//error不能调用非静态属性
} //显示半径对应圆面积信息
public function display() {
echo "半径是".$this->radius."的圆的面积为:".$this->area()."<br />";
}
} //测试
$cir1 = new circle();
$cir1->setRadius(3);
$cir1->display();
echo "PI:".circle::displayPI()."<br />"; ?>

PHP面向对象编程(1)基础的更多相关文章

  1. .net 4.0 面向对象编程漫谈基础篇读书笔记

    话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功 ...

  2. 类和对象:面向对象编程 - 零基础入门学习Python037

    类和对象:面向对象编程 让编程改变世界 Change the world by program 经过上节课的热身,相信大家对类和对象已经有了初步的认识,但似乎还是懵懵懂懂:好像面向对象编程很厉害,但不 ...

  3. php面向对象编程(oop)基础知识示例解释

    面向对象并不是一种技术,而是一种思想,是一种解决问题的最基本的思维方式!如何理解使用?OOP:面向对象编程 (直接代码说明) 1.面向对象的基本概念 示例demo: <?php header(& ...

  4. 面向对象编程(OOP)基础之UML基础

    在我们学习OOP过程中,难免会见到一些结构图~各种小框框.各种箭头.今天小猪就来简单介绍一下这些框框箭头的意思——UML. UML定义的关系主要有:泛化(继承).实现.依赖.关联.聚合.组合,这六种关 ...

  5. scala学习笔记2:面向对象编程部分基础

    以下主要记录的是看完scala in programming这本书Functional Objects(第六章)后的要点总结. 1,程序中可变对象(var)和不可变对象(val)使用的权衡问题 不可变 ...

  6. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  7. Objective-C 基础教程第三章,面向对象编程基础知

    目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...

  8. <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”

    继承和动态绑定与数据抽象一起成为面向对象编程的基础. 模板使我们能够编写独立于具体类型的泛型类和泛型函数. 第15章 面向对象编程 面向对象编程基于三个基本概念:数据抽象.继承和动态绑定.在C++中, ...

  9. 【PHP】PHP面向对象编程--phpOOP入门

     PHP从入门到精通 之PHP的面相对象编程 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序 ...

  10. 《挑战30天C++入门极限》C++面向对象编程入门:类(class)

        C++面向对象编程入门:类(class) 上两篇内容我们着重说了结构体相关知识的操作. 以后的内容我们将逐步完全以c++作为主体了,这也意味着我们的教程正式进入面向对象的编程了. 前面的教程我 ...

随机推荐

  1. Java文件与io——装饰者模式

    意图: 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比于生成子类更为灵活.该模式以对客户端透明的方式扩展对象的功能. 适用环境 在不影响其他对象的情况下,以动态.透明的 ...

  2. QT源码解析笔记

    1. QT如何绘制控件的 QT的绘制控件在QStyleSheetStyle::DrawControl里面,这里会调用默认的QSS来绘制效果 2. 在设置一次QSS以后,将会触发polish事件,里面将 ...

  3. 程序代码里出现illegal character '\ufeff' 和 expected class or object definition的解决办法(图文详解)

    不多说,直接上干货! 问题详情 问题分析    可能原因导致1:你的程序也许,是在他人那里复制而来,会导致这样的问题. 可能原因导致2:由于页面编码造成的.  可能原因导致1的解决办法 这个,好比,我 ...

  4. spring boot注入error,Consider defining a bean of type 'xxx' in your configuration问题解决方案

    经常出现这问题一定是非spring生态圈的@标签 没被spring引入,如mybatis等 因为在默认情况下只能扫描与控制器在同一个包下以及其子包下的@Component注解,以及能将指定注解的类自动 ...

  5. 如何添加/移除CSS类

    在网页设计中,我们常常要使用Javascript来改变页面元素的样式.其中一种办法是改变页面元素的CSS类(Class),这在传统的Javascript里,我们通常是通过处理HTML Dom的clas ...

  6. iShow UI for React 最佳实践

    React 与 AJAX React只负责处理View这一层,它本身不涉及网络请求/AJAX,所以这里我们需求考虑两个问题: 第一,用什么技术从服务端获取数据: 第二,获取到的数据应该放在react组 ...

  7. android下的异步任务

    异步任务一般用在加载一些网络资源的时候用,主要的实现方法是新建一个类来继承AsyncTask这个父类,然后复写该类下面的一些方法,其中doInBackground方法是必须要的,下面看代码 packa ...

  8. springcloud 之 feign的重复性调用 优化

    最近有一个springcloud的feign请求,用于获取坐标经纬度的信息,返回结果永远是固定不变的,所以考虑优化一下,不然每次转换几个坐标都要去请求feign,返回的所有坐标信息,数据量太大导致耗时 ...

  9. [备忘]java 静态块、非静态块、静态函数、构造函数 执行顺序

    原文链接:http://liqita.iteye.com/blog/1472717 java中经常有一些静态块,这是用来在生成类之前进行的初始化,无论java还C++语言中的static,都是最先初始 ...

  10. webpack实用小功能介绍

    1.overlay overlay属于devServer的属性,配置案例如下: ? 1 2 3 4 5 6 devServer: {  overlay: {   errors: true,   war ...