面向对象有三大特性:封装、继承、多态
面相对象,的简称:OOP
静态
一包粉笔,每一包粉笔当做一个对象,把这包粉笔抽象出一个类,叫做粉笔类
。(相同的一包粉笔)粉笔有长度,粉笔颜色。长度和颜色有什么区别,长度是属于谁的,这一包粉笔的长度有可能一样吗??有很多不一样的。粉笔的具体长度是属于具体对象,颜色(没有特殊的情况下,就是一样的颜色)颜色属于谁的???颜色是属于这一类的。长度是属于每一个对象。
普通的成员是属于对象的。
颜色是属于这一类的。长度是属于每一个对象。这样就要区别对带
class fenbi
{
Public $changdu; //属于对象的
poblic $yanse; //属于类的
}
在定义的时候就要把它区分开,怎样区分呢??/
如果属于类的,加一个关键字,static,这个成员是属于类的就在前面加上static的关键字,这样$yanse;和$changdu;就区分开了,$changdu; //属于对象的,poblic $yanse; //属于类的
static的关键字又称为静态的,
这样就把$yanse;成员变量定义为一个静态的成员变量,把这个$changdu;定义为一个普通的成员变量,这就是静态和普通的区别。
静态的成员,在定义是需要加上一个关键字static,静态的成员是属于类的,普通成员是属于对象的。
在调用普通的时候怎样调用changdu呢???
$f=new feibi(); //先创建一个对象(造对象)
$f->changdu ;//在调用长度
静态的怎样调用/?
1 <?php 2 3 class fenbi 4 5 { 6 7 public $changdu ; 8 9 public static $yanse ; 10 11 } 12 13 $f=new fenbi(); 14 15 $f->yanse; 16 17 ?>
如果把这个成员定义为一个静态的,这个对象就找不到了,他不是属于这个对象的,它是属于具体某一个大类的,$yanse ;不是属于每一个粉笔的,是属于这一包粉笔的。
静态的成员怎样去调用能??
静态的是属于类的,所以在调用的时候用类名来调用。
1 <?php 2 3 class fenbi 4 5 { 6 7 public $changdu ; 8 9 public static $yanse ; 10 11 } 12 13 feibi::$yanse;//粉笔类里有一个成员是yanse ,yanse是属于fenbi这一个类的 14 15 ?>
怎样调用静态的成员:用类名::来调用里面的某一个成员;
可以随时把一个成员的变成一个静态的。静态下的的值可以进行取值,赋值,运算。
静态的缺点: 没有实例化
1 <?php
2 3 class fenbi 4 5 { 6 7 public $changdu ; 8 9 public static $yanse ; 10 11 public static function lianjie() 12 13 { 14 15 Return ”连接对象”; 16 17 } 18 19 }
20 Fenbi::lianjie();
所以这可方法,是属于类的,还是属于对象的,没有一个具体的说明和规则,完全是自己定义的,想让它是普通的就是普通的,想让它是静态的就是静态的
调用静态成员的方法和变量,都是用::来调用
静态是属于类的,非静态的是属于对象的。
普通的怎样调用,静态的怎样调用??
静态的方法去掉用普通的成员,是不行的。
1 <?php 2 3 class fenbi 4 5 { 6 7 public $changdu ; 8 9 public static $yanse ; 10 11 12 13 public static function lianjie() 14 15 { 16 17 $this->changdu; //是不可以的,是调用不到的 18 19 return"连接对象"; 20 21 } 22 23 } 24 25 fenbi::$yanse; 26 27 fenbi::lianjie(); 28 29 30 31 ?>
静态的方法去掉用普通的成员,是不能的???因为静态的是属于类的,普通是属于对象的,还没有造对象怎么会有$this->changdu;它呢?$this是代表该对象。
静态的方法可不可以调用静态的成员,是可以的。
1 <?php 2 3 class fenbi 4 5 { 6 7 public $changdu ; 8 9 public static $yanse ; 10 11 12 13 public static function lianjie() 14 15 { 16 17 Fenbi::$yanse; //静态的可以调用静态的成员 18 19 return"连接对象"; 20 21 } 22 23 } 24 25 fenbi::$yanse; 26 27 fenbi::lianjie(); 28 29 30 31 ?> 32 33
普通的方法是可以调用静态的 。
1 <?php 2 3 class fenbi 4 5 { 6 7 public $changdu ; 8 9 public static $yanse=”red” ; //赋初始值 10 11 12 13 public static function lianjie() 14 15 { 16 17 Fenbi::$yanse; 18 19 return"连接对象"; 20 21 public function Test() //普通方法调用静态的 22 23 { 24 25 echo fenbi::$yansu; 26 27 } 28 29 } 30 31 } 32 33 $r=new fenbi ();//造对象 34 35 $r-> Test() ;//用对象调用里面的方法 36 37 ?> 38 39
一定要记住:
【1】普通成员是属于对象的
【2】静态成员是属于类的
【3】普通成员方法里面可以调用静态成员
【4】静态方法里面不能调用普通成员