类的概念:类是具有相同属性和操作的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和操作说明两个主要部分。

1、类的定义:

i. 类的关键字定义使用class

1.定义一个空类

Class Person{};

2.定义一个有成员属性和操作的类

Class Person{

成员属性……..

操 作……..

}

3.定义一个不能被继承的类,使用final关键字

Final class Person{

成员属性……..

操 作……..

}

4.注意:final关键字不能用来修饰成员属性 ,只能修饰类和方法(final方法后面介绍)

5.这里举一个带有final的class

定义一个final的类FinalClass,包含一个公共函数

final class FinalClass {

public function ffun() {

echo “本类为final类”;

}

}

定义一个类ChildFinalClass 并继承FinalClass 类

class ChildFinalClass extends FinalClass {

public function fchildfun() {

echo ‘本类继承final类FinalClass ’;

}

}

这样当执行以上命令的时候系统会提示

Fatal error: Class ChildFinalClass may not inherit from final class (FinalClass)

证明由final关键字定义的class是不可以被子类继承的

2、类中成员属性的定义

i. 成员属性就是对该类定义的一些变量属性,那人作为一个类来说,人都有一对眼睛(正常的啊,二郎神除外),一张嘴,两个耳朵,等这样的一些固定的用来描述或表现某种事物的专有名词称为成员属性

ii. 类中成员属性的声明使用的关键字

iii. 常见成员属性声明是由关以下键字

public,var,protected,private开头的,然后跟一个变量来组成的。还有一些成员属性包括,静态static,常量const.

Public: 表示全局的,类内部外部子类都可以访问

Var: php 5 版本中会认为这个成员属性为public类型的属性

protected 表示受保护的,只有本类或子类或父类中可以访问

private

表示私有的,只有本类内部可以使用

Static: 1)静态的属性,

2)用static修饰的成员属性可以被同一个类的所有对象共享

3) 静态的数据是在类第一次被加载的时候就存在了内存中的数据段中(初始化静态段)

4)类中使用self::成员属性名

5)类外 类名::成员属性名

Const: 1)类中常量属性,在类中声明常量必须使用const

2)类中使用 self::成员属性名

3)类外使用 类名::成员属性名

注意:属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数。例如,不能包含任何运算符,不能是任何变量,不能是一个函数等。

iv. 成员属性的调用方式:

在类的成员方法里面,可以通过 $this->property(property是属性名字)这种方式来访问类的属性、 方法,但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用 self::$property。 在类的非静态方法里面可以使用伪变量 $this,这个伪变量是调用该方法的实例化对象引用。

接下来用代码对上面的内容做一下解释:

class FinalClass {

//static $a = strTolower();

//这种写法错误

//const A = 1+2; //这种写法错误

//public $name = 123+456;

//这种写法错误

static $a = ‘$a’;

const A = ‘A’;

public $name = ‘凤姐’;

protected $sex = ‘男+女’;

private $age = 23;

}

class ChildFinalClass extends FinalClass{

public function fchildfun(){

echo ‘ChildFinalClass类中ChildFinalClass::$a->’.ChildFinalClass::$a.”

“;

Echo ‘ChildFinalClass类中ChildFinalClass::A->’.ChildFinalClass::A.”

“;

echo ‘大家好,我叫’.$this->name.”

“;

echo ‘我是:’.$this->sex.’生

‘;

echo ‘我今年:’.$this->age.’

‘;

//由于age是私有的成员属性,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。

}

}

$obj = new ChildFinalClass();

$obj->fchildfun();

3、类中操作的定义

i. 我本人一般喜欢叫操作为成员方法,以下我会叫操作为方法其实都是一样的

ii. 成员方法的定义:成员方法就是对该类定义的一些函数方法,比如拿这个类来例句例子,人能吃饭,能跑步,能敲代码,这就是成员方法。也就是可以做一些可执行性的动作我们理解为成员方法

iii. 成员方法的访问和成员属性一样可以参照上面成员属性的访问介绍。

iv. 成员方法和成员属性一样也包括public,protected,private,static,final并且作用域也是一样的,接下来举一些例子供大家参考和理解。

v. 静态的成员方法只能访问静态的成员属性和成员方法,并且类内部访问静态方法可以使用self::静态方法(), 类外部访问使用类名::静态方法()

1. 自定义方法:

class FinalClass {

static $a = ‘$a’;

const A = ‘A’;

public $name = ‘凤姐’;

protected $sex = ‘男+女’;

private $age = 23;

//定义一个公共方法

public function publickfun(){

echo ‘FinalClass类中self::$a->’.self::$a.”

“;

echo “FinalClass类中self::A->”.self::A.”

“;

echo ‘大家好,我叫:’.$this->name.”

“;

echo ‘我是:’.$this->sex.’生

‘;

echo ‘我今年:’.$this->age.’

‘;

}

//定义一个受保护的方法

protected function protectedfun(){

echo ‘FinalClass类中self::$a->’.self::$a.”

“;

echo “FinalClass类中self::A->”.self::A.”

“;

echo ‘大家好,我叫:’.$this->name.”

“;

echo ‘我是:’.$this->sex.’生

‘;

echo ‘我今年:’.$this->age.’

‘;

}

//定义一个私用方法

private function privatefun(){

echo ‘FinalClass类中self::$a->’.self::$a.”

“;

echo “FinalClass类中self::A->”.self::A.”

“;

echo ‘大家好,我叫:’.$this->name.”

“;

echo ‘我是:’.$this->sex.’生

‘;

echo ‘我今年:’.$this->age.’

‘;

}

}

class ChildFinalClass extends FinalClass{

public function fchildfun(){

echo ‘ChildFinalClass类中ChildFinalClass::$a->’.ChildFinalClass::$a.”

“;

Echo ‘ChildFinalClass类中ChildFinalClass::A->’.ChildFinalClass::A.”

“;

echo ‘我是:’.$this->sex.’生

‘;

echo ‘我今年:’.$this->age.’

‘;

//由于age是私有的成员属性,可以理解为我不想让别人知道我的年龄,所以在这里将不会被调用,将提示没有定义此属性在ChildFinalClass类中。

$this->publickfun();

$this->protectedfun();

$this->privatefun();

//由于privatefun是私有的成员方法,所以在这里将不会被调用。

}

}

$obj = new ChildFinalClass();

$obj->fchildfun();

2.魔术方法

i. 魔术方法必须被定义为公共的,所有其他魔术方法都必须如此

ii. 从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法,接下来列出一些魔术方法,如果大家想详细了解可以针对某一个进行查询了解,这里就不大篇幅的介绍了。

1、__construct() 构造方法

__destruct()

析构方法

2、__clone()

如果想复制一个对象则需要使用clone方法

3、__toString()

方法在将一个对象转化成字符串时自动调用,比如使用echo打印对象时

4、__sleep() 串行化的时候用

__wakeup 反串行化的时候调用

5、 __set_state()

当调用var_export()时,这个静态 方法会被调用(自PHP 5.1.0起有效)

6、__invoke(PHP 5.3.0以上版本有效)

当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。

7、__callStatic(PHP 5.3.0以上版本有效) 是为了处理静态方法调用

8、__get() 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名。

__set() 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值。 这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。

9、__isset() 当在一个未定义的属性上调用isset()函数时调用此方法

__unset() 当在一个未定义的属性上调用unset()函数时调用此方法

10、__call( $method, $arg_array )

当调用一个未定义的方法是调用此方法

这里的未定义的方法包括没有权限访问的方法;如果方法不存在就去父类中找这个方法,如果父类中也不存在就去调用本类的__call()方​法,如果本类中不存在__call()方法就去找父类中的__call()方法。

11、__autoload() 自动加载魔术方法

www.bkjia.comtrueTechArticle类的概念:类是具有相同属性和操作的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和操作两个主要…

php成员属性的声明方式,PHP中如何定义类及其成员属性与操作_PHP教程相关推荐

  1. python定义类的程序_python扫码签到程序python中如何定义类

    什么是类? 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下: < ...

  2. Php扫码签到功能怎么实现,python扫码签到程序python中如何定义类

    什么是类? 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下: < ...

  3. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...

  4. PetShop 4.0知识点:base 关键字用于从派生类中访问基类的成员

    //base 关键字用于从派生类中访问基类的成员: //调用基类上已被其他方法重写的方法. //指定创建派生类实例时应调用的基类构造函数. //基类访问只能在构造函数.实例方法或实例属性访问器中进行. ...

  5. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围

    参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 *    类的访问修 ...

  6. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  7. python中定义类的关键字,在Python中,定义类的关键字是

    在Python中,定义类的关键字是 答:class; 劳动生产率分为:实物劳动生产率.工时劳动生产率.货币劳动生产率. 答:正确 总的来说,全球通用卡交易金额.交易笔数在近十年来,低于全球经济的增速 ...

  8. 【python】python中的定义类属性和对像属性

    python中变量是没有类型的可以绑定任意类型,但是在语法上不能声明变量. 那我们怎麽来声名一个变量呢? f=None 这样我们给着个变量绑定了以各None类型,我们随时可用重新绑定其它类型.这样我们 ...

  9. python在子类中添加新的属性_pycharm实现在子类中添加一个父类没有的属性

    我就废话不多说了,还是直接看代码吧! class Car(): """一次模拟汽车的简单尝试""" def __init__(self, m ...

最新文章

  1. 2016.3.2(String 类)
  2. 视觉库—OpenCV
  3. Flask-Login用户登陆
  4. Linux 获取屏幕分辨率与窗口行列数(c/c++)
  5. 汇编语言-王爽 随书源码、检测点、实验答案
  6. 使用qume启动虚拟机的时候出现:“启动域时出错: Requested operation is not valid: network ‘default‘ is not active”
  7. 成都青白江的羽毛球场地
  8. centos7zabbix-agen安装
  9. 我的团长我的团第十六集
  10. 文件系统FAT32与NTFS
  11. java带你实现猜数字小游戏,刚入门也能看懂(超详细)
  12. 中国传统色的魅力|这8组中国风传统颜色你一定要收藏
  13. 解决catkin_make时出现make[2]: *** No rule to make target ‘/usr/lib/libOpenNI2.so‘, needed by ‘*******‘。
  14. 电脑桌面点击计算机反应迟钝,win7系统点击桌面图标反映迟钝影响整体运行速度怎么办【图文】...
  15. 记录又一次实战GetShell
  16. 活捉那只抢算力的谷歌员工!挤占计算资源?博弈论或可破解数据中心“囚徒困境”
  17. c语言实现人民币转换成大写中文数字
  18. 【结构生物学】基于AI辅助的结构蛋白质组学研究细胞内的蛋白质复合体
  19. Matlab一维矩阵无法与三维矩阵进行矩阵乘法?
  20. 基于MATLAB的4f系统实现边缘提取

热门文章

  1. 摩根大通:iPhone 13和新款iPhone SE将推动苹果业绩明年再破纪录
  2. 华为旗下哈勃投资公司入股光刻机制造商科益虹源
  3. 荣耀正式出售!30余家代理商接盘自救,华为回应...
  4. 理想汽车致歉并宣布召回10469台车,官方:不影响后续生产和销售
  5. 别想了:全系iPhone12将不配120Hz高刷屏
  6. 淘宝直播上线“湖北加油”专区:近7000湖北商家获得扶持
  7. 骁龙865+65W闪充!realme 真我X50 Pro 5G正式全球发布
  8. 2019年微信数据报告:男性用户最爱搜“小姐姐”,表情包最受欢迎的是它
  9. 卸任后的马云“忙”坏了,健美大赛、蹦迪、修空调、种蘑菇,真相看懵了
  10. 旷视申请赴港IPO:阿里蚂蚁金服持股近30%