文档库 最新最全的文档下载
当前位置:文档库 › 黑马程序员_PHP_课程同步笔记day27:类中成员

黑马程序员_PHP_课程同步笔记day27:类中成员

黑马程序员_PHP_课程同步笔记day27:类中成员
黑马程序员_PHP_课程同步笔记day27:类中成员

【黑马程序员济南】PHP课程同步笔记day27:类中成员

类中成员

包括:

类常量;

属性分为静态属性和实例属性;

方法分为静态方法和实例方法;

细化:

class 类名{

//类常量:

//const 常量名 = 常量值;//必须在此时赋值!

const PI = 3.14;

//实例属性:

var $p1 = 1; //赋值

var $p2 ; //不赋值

//静态属性:

static $p3 = 3; //赋值;

static $p4 ; //不赋值

//实例方法:

function f1(.....){ 。。。。。}

//静态方法:

static function f2( .... ) { 。。。。。}

}

类常量

其实就是常量,无非,其定义在一个类中;

定义形式:

class 类名{

const 常量名= 值;//值只能是“直接值”(字面值)

}

使用形式:

类名::常量名

class A{

const PI = 3.14;

}

echo A::PI;

$s = A::PI * 2 * 2; //算半径为2的圆面积;

实例属性和静态属性

实例属性:只能该类的对象来使用:

$对象->实例属性名;

静态属性:只能该类本身来使用:

类名::$静态属性名

重要区别:

实例属性是可以随着对象的增多,而可以变成“多份数据”,而静态属性,对一个类来说,就只有一份!

[mw_shl_code=php,true]

//传智播客出品

//演示实例属性和静态属性的使用和区别class A{

var $p1 = 1;

var $p2;

static $p3 = 3;

static $p4;

}

//创建一个A的对象

$a1 = new A();

$a1->p1 = 11;

$a1->p2 = 22;

A::$p3 = 33;

A::$p4 = 44;

//创建另一个A对象

$a2 = new A();

$a2->p1 = 111;

$a2->p2 = 222;

A::$p3 = 333;

A::$p4 = 444;

var_dump($a1);

echo "
";

var_dump($a2);

echo "
";

echo A::$p3;

echo "
";

//删除静态属性

//unset(A::$p4); 删除静态属性会报致命错误导致后面代码无法执行echo A::$p4;

echo "
";

//删除实例属性

unset($a1->p1);

var_dump($a1);[/mw_shl_code]

执行结果为:

object(A)#1 (2) {["p1"]=>int(11) ["p2"]=>int(22)}

object(A)#2 (2) {["p1"]=>int(111) ["p2"]=>int(222)}

333

444

object(A)#1 (1) {["p2"]=>int(22)}

通常,静态属性,用于存储一个类的所有对象的共有特性信息,比如:[mw_shl_code=php,true]

//传智播客出品

class Student{

var $name = "";

static $count = 0;

}

$s1 = new Student();

$s1->name = "张三";

Student::$count++;

$s2 = new Student();

$s2->name = "李四";

Student::$count++;

[/mw_shl_code]

伪变量(关键字)$this

它只能用在一个类的一个方法中;

它代表一个对象;

它代表调用该方法的对象——任何方法,一定是某个“对象”来调用实例方法和静态方法

实例方法:

就是一个类的对象所“拥有”的方法;

每个类,都可能有多个对象;

每个对象,执行该方法,都可能会得到不同的结果。

注意:只要在一个类中定义了一个实例方法,则该类的对象,就一定会拥有该方法;

调用:

$对象变量->实例方法名(....);

静态方法:

就是一个类本身所拥有的方法;

调用:

类名::静态方法( ... );

[mw_shl_code=php,true]

//传智播客出品

class A{

var $name;

var $age = 18;

function IntroMe(){

echo "

大家好";

echo "
我叫".$this->name;

echo "
我今年".$this->age."岁

";

}

static function f2(){

echo "

这是A类中的一个静态方法f2

";

}

}

$a1 = new A();

$a1->name = "张三";

$a1->age = 22;

$a1->IntroMe();

A::f2();

$a2 = new A();

$a2->name = "李四";

$a2->age = 23;

$a2->IntroMe();

A::f2();

[/mw_shl_code]

输出的结果为:

大家好

我叫张三

我今年22岁

这是A类中的一个静态方法f2

大家好

我叫李四

我今年23岁

这是A类中的一个静态方法f2

相关文档