1)、类、对象、实例的关系

类是对象的抽象,对象是类的具体化,实例是对象的另一种名称。

2)、类的定义

①、成员属性(变量)的定义与使用

成员属性必须 var public protected private

语法:

形式1:var  $v1 ;     //定义不赋值

形式2:var  $v2 = 2; //定义的同时可以赋值,该值只能是“直接值”,常量(值),不能是变量值,也不能是“计算表达式”

形式3:public  $v1;

形式4:public  $2 = 2;  //其实var是“public”一个别名,正式用public更好。

作用:对事物特征的描述。

错误形式:

$v1 = 1;

var    $v2 = 1+3;   //右边不能是计算表达式

public  $v3 = $v2;  //右边不能是变量

使用形式:

$对象->属性名;//注意:属性名前面没有$符号。

②、成员方法(函数)的定义与使用

语法:关键字(缺省时默认public) + function +名称(参数)

定义成员方法的时候可以加参数也可以不加参数

③、this,self,parent三个关键字

this就是指向当前对象实例的指针,不指向任何其他对象或类。

self通常只能在某个类的某个方法内部代表该类的名称。

parent如果想在子类中调用父类的同名方法,那么请你使用关键字parent::+方法名()

④、php链式调用原理

在一个类中有多个方法,当你实例化这个类,并调用方法时只能一个一个调用

如果要实现链式调用,这要在方法的结束添加return $this即可。

3)、static关键字

static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定

①、静态类:

PHP中和Java中一样:如果一个类要被声明为static的,只有一种情况,就是静态内部类。

类中成员有:静态的和非静态的,而静态类只有一种,那就是静态内部类。

②、静态成员

静态属性:只隶属于类本身——也可以看做是所有对象的“共有数据”。

使用:类::$静态属性名

静态方法:同样隶属于类,而不是隶属于具体对象。

使用:类名::静态方法名();

【注】1、静态方法中只能调用静态属性和静态方法,不能调用非静态属性和方法,self::方法名()、self::属性名

2、动态方法中静态方法和动态方法都可以调用,如果在同一个类中:

调用静态方法使用:self::方法名()、self::属性名,

调用动态方法用this−>方法名()、this−>方法名()、this->属性名

3、只有实例化的时候才会自动调用构造函数,所以只有动态类才可以触发构造函数,静态类不会触发构造函数

4、由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。

5、静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。

6、自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。

③、后期静态绑定:

Self:通常只能在某个类的某个方法内部代表该类的名称,所以指向当前A类的who方法,static有后期绑定的概念,所以指向B类,因为是B在调用test方法,所以指向B类,而B类中有who方法。

4)、类常量(const关键字)

1:类里面定义的常量,用const定义,常量是属于类的,不是对象的。

2:定义类中的常量的时候必须给初始值

3:在使用类中的常量的时候,要使用类名::+常量名或者self::+常量名来调用

4:在类的外部调用类的常量,只能使用类名::+常量名来调用

5:类中定义的常量只归类所有,不归对象所有,不能通过对象来调用

类内部调用类常量:

类外部调用类常量:

5)、范围解析操作符(::)

作用:可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。

实例1:类的外部使用 :: 操作符

实例2:self,parent 和 static 这三个特殊的关键字是用于在类内部对其属性或方法进行访问的

实例3:调用父类的方法

6)、实例化中的问题

实例化对象的格式为:

$变量名 = new 类名();   //括号里可传参数

给对象中的成员属性赋值的格式为:

$引用名 ->成员属性 = 值;

调用对象中的成员方法的格式为:

$引用名 -> 成员方法;

成员方法使用成员属性的格式为

$this -> 成员属性;

实例化对象时参数问题:

1:当我们实例化一个php类的时候,要怎么传递参数呢?这取决于该类的构造方法。

2:可以通过var_dump()打印对象,不过只能打印对象的属性,它的方法不能打印出来。

3:要想获取对象的方法列表,可以用get_class_methods函数。

【注】

php面向对象公共类,PHP面向对象(一):类与类的实例化相关推荐

  1. 类与面向对象的精华:继承【C++继承】

    引入继承 为什么需要继承? 简单举例 继承 定义 定性 is-a 而不是 has-a is-a has-a 语法 继承方式 继承方式影响了什么? 公有继承 public 私有继承 private 保护 ...

  2. API 类和面向对象简介

    2019独角兽企业重金招聘Python工程师标准>>> API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数, 目的是提 ...

  3. 【Python基础】07、Python类与面向对象

    一.面向对象编程(OOP) 程序=算法+数据结构=指令+数据 1.代码可以选择以指令为核心或以数据为核心进行编写 两种范型: 以指令为核心:围绕"正在发生什么"进行编写 面向过程编 ...

  4. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  5. 【Java 面向对象】基础、Java程序的内存划分、嵌套类(内部类、静态嵌套类)、局部类、接口的升级问题(默认方法、静态方法)、instanceof

    面向对象 对象的内存 复杂对象的内存 对象数组的内存 思考:方法存储在哪里? Java程序的内存划分 this.super 注解(Annotation) 访问控制(Access Control) to ...

  6. python学习笔记(七)类和面向对象

    目录 (一)了解面向对象 面向过程 面向对象的三大特性: (二)python中的类 1)定义类 新式类与经典类 2)初始化与实例化 3)类的属性 类属性与实例属性 私有属性 特殊属性 同名的类属性与实 ...

  7. JAVA类与面向对象

    JAVA | 类与面向对象 day8 对于任何的知识点我们都可以从这三个点去剖析: 3W => what? why? how? 面向过程与面向对象 Java面向对象学习的三条主线 Java类及类 ...

  8. python如何定义类_Python 面向对象

    Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...

  9. Javascript基础与面向对象基础~第四讲 Javascript中的类对象

    今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...

最新文章

  1. 随笔之如何实现一个线程池
  2. 1.08亿条在线赌场信息泄露,来源指向 ElasticSearch
  3. bitnami-redmineserver迁移
  4. c++ 弹出菜单在固定的位置_固定资产管理软件操作手册(资产维修)
  5. Mac下安装mysql5.7 完整步骤(图文详解)
  6. 对比tensorflow查看打印输出张量Tensor的两种方法(急切执行tf.enable_eager_execution()和tf.Session.run())
  7. POJ 3694 Network
  8. SCRUM 12.23
  9. wr703n 4m固件 带打印机服务器_旗捷支招 | 如何关闭打印机固件自动更新?分分钟搞定!...
  10. 软件易用性文章分享第二篇-手机易用性: 一个经典的实验
  11. 视频播放组件实战【LivePlayer H5播放器】
  12. w10 http基本原理 Nginx部署
  13. 有定位的含有 input的弹框,在有些手机光标乱跳
  14. “Defaulting to user installation because normal site-packages is not writeable“
  15. Pathon基础篇数据类型之——数值、字符串与列表内容
  16. mysql server mirro_Docker下安装MySQL Server镜像
  17. phal接口查询显示中多余方法处理
  18. Win10电脑用360杀毒一全盘杀毒就蓝屏
  19. IM开发宝典:史上最全,微信各种功能参数和逻辑规则资料汇总
  20. joinus计算机怎么弄游戏,美国us计算机专业学校排名:joinus学生计算机如何消除sci...

热门文章

  1. SAP Cloud for Customer UI Designer里如何消费Object Value Selector(OVS)
  2. SAP Spartacus Component-wrapper.directive.ts launch Component的三个参数
  3. SAP Fiori internationalization(国际化)实现的一些例子
  4. where is url parameter evaluated in UI5 core q.sap.getUriParameters
  5. SAP BCP 超时机制的实现
  6. 关于SAP Spartacus添加缺失的cost center route配置的必要性
  7. SAP WebIDE destination的 discovery工作机制 -下拉菜单项是如何被填充的
  8. linux未知的类型名 FILE,smb使用 ------转载自http://blog.csdn.net/tlaff/article/details/5463068...
  9. ts获取服务器数据_基于Nginx的媒体服务器技术-线上公开课
  10. java计算圆锥体积_六年级:美妙数学之“球的体积计算”(0430六)