Static(静态)关键字

通过函数改变内部属性的值:

 1 <?php
 2
 3 class Human{
 4     public $name;
 5     protected $height;
 6     public $weight;
 7     private $isHungry = true;
 8
 9 }
10
11
12 class NbaPlayer extends Human{
13
14     public $team="Bull";
15     public $playerNumber="23";
16
17     public $president = "David Stern";
18
19     public function changePresident($newPrsdt) {
20         $this->president = $newPrsdt;
21     }
22 }
23
24 $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23");
25 $james = new NbaPlayer("James","203cm","120kg","Heat","6");
26
27 $jordan->changePresident("Adan Silver");
28 echo "Jordan:".$jordan->president ."<br/>";
29 echo "James:".$james->president ."<br/>";

这时,通过 $jordan->changePresident("Adan Silver"); 来改变jordan的president,

如何同时改变jordan和james的president的值呢,这就需要使用Static静态变量了

 1 <?php
 2
 3 class Human{
 4     public $name;
 5     protected $height;
 6     public $weight;
 7     private $isHungry = true;
 8
 9 }
10
11
12 class NbaPlayer extends Human{
13
14     public $team="Bull";
15     public $playerNumber="23";
16     //静态属性定义在访问控制关键字后面添加static关键字即可
17     public static $president = "David Stern";
18     //静态方法实在function前面加上static
19     public static function changePresident($newPrsdt) {
20         //在类定义使用静态成员的时候,用self关键字后面跟着::操作符
21         //在访问静态成员属性的时候,::后面需要跟$符号
22         self::$president = $newPrsdt;
23     }
24 }
25 //在类定义外部访问静态属性,我们可以用类名加::操作符来访问类的静态成员
26 echo NbaPlayer::$president." before changed"."<br/>";
27 NbaPlayer::changePresident("Adam Silver");
28 echo NbaPlayer::$president." after changed" . "<br/>";

输出结果:

1 David Stern before changed
2 Adam Silver after changed

然后我们再讨论子类静态函数调用父类的静态变量

 1 <?php
 2
 3 class Human{
 4     public $name;
 5     protected $height;
 6     public $weight;
 7     private $isHungry = true;
 8     public static $sValue= "static value in Human class "."<br/>";
 9
10 }
11
12 class NbaPlayer extends Human{
13
14     public $team="Bull";
15     public $playerNumber="23";
16     private $age = "40";
17     //静态属性定义在访问控制关键字后面添加static关键字即可
18     public static $president = "David Stern";
19     //静态方法实在function前面加上static
20     public static function changePresident($newPrsdt) {
21         //在类定义使用静态成员的时候,用self或者static关键字后面跟着::操作符
22         //在访问静态成员属性的时候,::后面需要跟$符号
23         self::$president = $newPrsdt;
24         //使用parent关键字就能够访问父类的静态成员
25         echo parent::$sValue;
26         //静态函数不能访问动态的属性
27         //echo->age;  这里会出错
28     }
29 }
30 //在类定义外部访问静态属性,我们可以用类名加::操作符来访问类的静态成员
31 echo NbaPlayer::$president." before changed"."<br/>";
32 NbaPlayer::changePresident("Adam Silver");
33 echo NbaPlayer::$president." after changed" . "<br/>";
34 //输出父类的静态变量
35 echo Human::$sValue;

输出为:

David Stern before changed
static value in Human class
Adam Silver after changed
static value in Human class

总结起来就六点:

1、静态属性用于保存类的公有数据
2、静态方法里面只能访问静态属性
3、静态成员不需要实例化对象就可以访问
4、类的内部可以通过self或者static关键字访问自身静态成员
5、可以通过parent关键字访问父类的静态成员
6、可以通过类的名称在类的定义外部访问静态成员
时间: 2024-11-01 22:35:32

Static(静态)关键字的相关文章

Java中static静态关键字的使用

我们可以基于一个类创建多个对象,每个对象都拥有自己的成员,所有成员变量的值是根据对象而存在的,有些时候我们希望一个类的所有对象共享一个成员,这就用到了static静态关键字 被静态关键字修饰的成员属于静态成员,它属于整个类所有,而并不仅仅是一个对象中的成员所共享,当系统第一次使用该类时,就会为其分配内存空间,直到该类被销毁是才进行资源回收,静态成员也有自己特有的访问方法 static可以修饰变量.方法.代码块 1.静态变量 因为局部静态变量和局部变量的使用方法一样,直接使用即可,所以对于类中定义

java学习--基础知识进阶第一天--static静态关键字、代码块

今日内容介绍 u 知识回顾 u static静态关键字 u 代码块 第1章 知识回顾 1.1 方法的回顾 1.1.1 案例代码一: package com.itheima_01; /* * 需求:定义一个方法求两个数的和,并在主方法中调用 * * 方法:类中的一段具有特定功能的程序,提高了代码的复用性和可维护性 * 定义格式: * public static 返回值类型(没有返回值写void) 方法名(参数类型 参数名,参数类型 参数名2) {//形参 * 方法体; * } * 调用方式: *

php中static静态关键字的使用

php中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次在定义时还是以前的值,常用于递归或子函数中保留之前的值,可以用来定义变量和方法,作用就不具体说了,说一下使用方式,下面简单的代码: 1 class Human{ 2 public $name; 3 protected $height; 4 5 public static $sValue="Static Value i

static静态关键字

1.1 静态的概述当在定义类的时候,类中都会有相应的属性和方法.而属性和方法都是通过创建本类对象调用的.当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余.可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?可以的,我们可以通过static关键字来实现.static它是静态修饰符,一般用来修饰类中的成员.1.2 静态的特点A: 被static修饰的成员变量属于类,不属于这个类的某个对象.(也就是说,多个对象在访问或修改sta

第2章 static静态关键字

1.1 静态的概述当在定义类的时候,类中都会有相应的属性和方法.而属性和方法都是通过创建本类对象调用的.当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余.可是不创建对象,方法又调用不了,这时就会想,那么我们能不能不创建对象,就可以调用方法呢?可以的,我们可以通过static关键字来实现.static它是静态修饰符,一般用来修饰类中的成员.1.2 静态的特点A: 被static修饰的成员变量属于类,不属于这个类的某个对象.(也就是说,多个对象在访问或修改sta

PHP类和对象之Static静态关键字

静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用. class Car { private static $speed = 10; public static function getSpeed() { return self::$speed; } } echo Car::getSpeed(); //调用静态方法 静态方法也可以通过变量来进行动态调用 $func = 'getSpeed'; $className = 'Car'

php Static静态关键字

静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用. class Car { private static $speed = 10; public static function getSpeed() { return self::$speed; } } echo Car::getSpeed();  //调用静态方法 静态方法也可以通过变量来进行动态调用 $func = 'getSpeed'; $className = 'Car

16/7/7_PHP-Static静态关键字

Static静态关键字 静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用. class Car { private static $speed = 10; public static function getSpeed() { return self::$speed; } } echo Car::getSpeed(); //调用静态方法 静态方法也可以通过变量来进行动态调用 $func = 'getSpeed'; $class

java中的关键字static(静态变量)和final定义常量

1 package point; 2 3 class Point { 4 5 int x = 0; 6 int y = 0; 7 static int z = 100; // 定义静态变量z,类变量 8 static final double PI = 3.1415926;// final定义常量,它的值在运行时不能被改变 9 10 Point(int a, int b) { 11 //PI=3.1415926; 12 /* 13 * 当使用静态常量的时候,不能在构造函数中初始化, 因为静态时,