类、对象、属性、方法
2017-08-25 14:04
162 查看
一、类和对象
1、官方定义
类:具有相同特征(属性和行为)的事物的抽象
对象:某个类的具象(具体的个体)
2、编程语言
类:是一种自定义的数据类型
对象:自定义类型的一个变量
3、实例分析(人类)
属性:姓名,身高,年龄,体重,...
行为:吃饭,睡觉,打豆豆,...
二、基本语法
1、定义类的关键字是class,类的内容(属性和方法)用{}括起来
2、所有的属性和方法前都必须有修饰:public、private、protect
3、属性其实就是变量,所谓行为其实就是方法/函数
4、创建对象使用关键字new
5、访问成员属性和方法使用'->',
如:$xiaoming->name;
$xiaoming->eat();
注:属性访问时不用加$,方法访问时不用加fonction
6、成员属性可以有默认值,用法与普通变量一样
7、成员方法中访问其它方法或属性,使用$this,表示当前对象,谁调用表示谁
注:this相当于一个变量,并不是关键字
三、创建对象
$p1 = new Person; #类中没有构造方法或构造方法没有参数
$p2 = new Person(); #标准形式,无论有误构造方法
$p3 = clone $p2; #克隆一个对象,得到一个新的对象,即使是单利对象
$p4 = new $p3; #根据一个对象创建该对象所属的类的对象
对象的赋值:
$p5 = $p4; #赋值方法不会创建新的对象,而是多了一个引用
说明:对象的赋值,其实是引用
四、魔术方法
说明:
1、当特定的时刻系统会自动调用的方法,他们都是以'__'开头,不能手动调用。
2、当多个对象被创建时,构造方法是先按正常顺序依次调用,程序结束时,析构函数是按照反顺序依次调用。栈的原理:先进后出
3、构造函数也可以被继承,当子类没有定义构造函数时
五、魔术常量
__LINE__ 变量所在行
__FILE__ 文件名
__DIR__ 文件路径
__FUNCTION__ 返回函数名
__CLASS__ 类名(一般在类中时用)
__METHOD__ 返回类里面方法名(一般在类中时用)
__NAMESPACE__ 名称空间
__TRAIT__ 过去trait名(一般在trait中使用)
六、相关函数
get_object_vars: 返回可见的对象属性构成的关联数组
get_class: 返回一个对象所属的类的类名,在类的内部使用时可以不传递对象
get_class_vars: 返回一个类的属性数组
get_class_methods: 返回一个类的方法数组
instanceof: 判断一个对象是否属于某个类,或一个对象的类是否实现了某个接口(并非函数)
一般用作if条件判断:
if($obj instanceof 类名)
if($obj instanceof 接口名)
is_subclass_of: 判断一个对象所属的类是否是某个类的子类
get_parent_class: 获取父类的类名
class_exists: 判断类是否存在
七、命名规范
1、类名要使用大驼峰命名法,如:UserModel
2、成员属性和方法名使用小驼峰,如:$userName
练习
1、小明手里有两张牌,左手♥K,右手♠A,问:小明交换两手的排,手里各有什么?
思路:
1. 先找对象
2. 根据对象抽象类
3. 按照逻辑一步一步处理
2、设计一个分数类
属性:num1,num2
方法:add,sub,mul,div
1、官方定义
类:具有相同特征(属性和行为)的事物的抽象
对象:某个类的具象(具体的个体)
2、编程语言
类:是一种自定义的数据类型
对象:自定义类型的一个变量
3、实例分析(人类)
属性:姓名,身高,年龄,体重,...
行为:吃饭,睡觉,打豆豆,...
二、基本语法
1、定义类的关键字是class,类的内容(属性和方法)用{}括起来
2、所有的属性和方法前都必须有修饰:public、private、protect
3、属性其实就是变量,所谓行为其实就是方法/函数
4、创建对象使用关键字new
5、访问成员属性和方法使用'->',
如:$xiaoming->name;
$xiaoming->eat();
注:属性访问时不用加$,方法访问时不用加fonction
6、成员属性可以有默认值,用法与普通变量一样
7、成员方法中访问其它方法或属性,使用$this,表示当前对象,谁调用表示谁
注:this相当于一个变量,并不是关键字
三、创建对象
$p1 = new Person; #类中没有构造方法或构造方法没有参数
$p2 = new Person(); #标准形式,无论有误构造方法
$p3 = clone $p2; #克隆一个对象,得到一个新的对象,即使是单利对象
$p4 = new $p3; #根据一个对象创建该对象所属的类的对象
对象的赋值:
$p5 = $p4; #赋值方法不会创建新的对象,而是多了一个引用
说明:对象的赋值,其实是引用
四、魔术方法
说明:
1、当特定的时刻系统会自动调用的方法,他们都是以'__'开头,不能手动调用。
2、当多个对象被创建时,构造方法是先按正常顺序依次调用,程序结束时,析构函数是按照反顺序依次调用。栈的原理:先进后出
3、构造函数也可以被继承,当子类没有定义构造函数时
方法名 | 触发时机 | 参数 | 返回值 |
__construct | (构造方法)创建新对象 | 根据需要设置 | 无 |
__destruct | (析构方法)对象销毁时 | 无 | 无 |
__toString | 对象当作字符串处理时 | 无 | 字符串 |
__invoke | 对象当作函数调用时 | 根据需要 | 根据需要 |
__debugInfo | 使用var_dump打印对象时 | 无 | 数组 |
__clone | 使用clone克隆对象时 | 无 | 无 |
__sleep | 使用serialize函数序列化对象时 | 无 | 数组 |
__wakeup | 使用unserialize函数反序列化生产对象时 | 无 | 无 |
__get | 访问无法访问的属性时 | 属性名 | 根据需要 |
__set | 设置无法访问的属性时 | 属性名,属性值 | 无 |
__isset | 使用isset()或empty()判断无法访问的属性时 | 属性名 | 根据需要 |
__unset | 使用unset()销毁无法访问的属性时 | 属性名 | 无 |
__callStatic(静态方法) | 调用无法访问的静态方法时 | 方法名,参数 | 根据需要 |
__call | 调用无法访问的普通方法时 | 方法名,参数 | 根据需要 |
__LINE__ 变量所在行
__FILE__ 文件名
__DIR__ 文件路径
__FUNCTION__ 返回函数名
__CLASS__ 类名(一般在类中时用)
__METHOD__ 返回类里面方法名(一般在类中时用)
__NAMESPACE__ 名称空间
__TRAIT__ 过去trait名(一般在trait中使用)
六、相关函数
get_object_vars: 返回可见的对象属性构成的关联数组
get_class: 返回一个对象所属的类的类名,在类的内部使用时可以不传递对象
get_class_vars: 返回一个类的属性数组
get_class_methods: 返回一个类的方法数组
instanceof: 判断一个对象是否属于某个类,或一个对象的类是否实现了某个接口(并非函数)
一般用作if条件判断:
if($obj instanceof 类名)
if($obj instanceof 接口名)
is_subclass_of: 判断一个对象所属的类是否是某个类的子类
get_parent_class: 获取父类的类名
class_exists: 判断类是否存在
七、命名规范
1、类名要使用大驼峰命名法,如:UserModel
2、成员属性和方法名使用小驼峰,如:$userName
练习
1、小明手里有两张牌,左手♥K,右手♠A,问:小明交换两手的排,手里各有什么?
思路:
1. 先找对象
2. 根据对象抽象类
3. 按照逻辑一步一步处理
2、设计一个分数类
属性:num1,num2
方法:add,sub,mul,div
相关文章推荐
- Java反射学习总结二(用反射调用对象的私有属性和方法)
- jQuery在IE8上使用,IE8提示“对象不支持此属性或方法”
- 举例讲解Python面相对象编程中对象的属性与类的方法
- C#实现获取不同对象中名称相同属性的方法
- 非静态的字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用
- Thymeleaf系列三 调用对象的成员变量值、Map值、List值、属性的方法 、ctx对象、param、session和application
- <转>获取对象属性的点方法和中括号法的区别
- jquery对象的基本方法和属性--学习笔记
- fastreport对象的属性和方法
- ADO三大对象的属性、方法、事件及常数(1)
- PageMethods未定义"或"对象不支持此属性或方法"解决方法
- 重回:类,对象,方法,属性
- javascript对象及内置对象属性和方法
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- 网页提示对象不支持此属性或方法怎么解决
- Java类、属性、方法、对象、继承、多态、接口、抽象类...
- JS检测对象中是否有某个属性或方法
- ADO三大对象的属性、方法、事件及常数
- IE下全局对象报 脚本错误提示“对象不支持此属性或方法”解决方案
- 最快捷测试Ext对象属性的方法