首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php面向对象static静态属性和静态方法调用

这篇文章主要介绍了php面向对象static静态属性和静态方法调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了phpstatic静态属性和静态方法调用...具体如下: 这里分析了php面向对象static静态属性和静态方法调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存存放位置,这样就非常容易理解了。...$height = 180; static public function tell(){ echo self::$name;//静态方法调用静态属性,使用self关键词 //echo $this...> 结论: (1)、静态属性不需要实例化即可调用。因为静态属性存放的位置是类里,调用方法为"类名::属性名"; (2)、静态方法不需要实例化即可调用。同上 (3)、静态方法不能调用静态属性。...因为非静态属性需要实例化后,存放在对象里; (4)、静态方法可以调用静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法

1.8K50

Java静态方法不能调用静态方法的原因

如图,是Java静态代码和实例对象互相调用的规则,我们接下来就讲讲为什么Java静态方法不可以调用静态代码呢。...静态方法是属于类的,即静态方法是随着类的加载而加载的,加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是类加载之后创建的,也就是说静态方法先于对象存在,当你创建一个对象时,程序为其堆中分配内存...静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法。...因此在对象未存在时非静态方法也不存在,静态方法自然不能调用一个不存在的方法。...(3)不能用一个值为null的引用类型变量来调用静态方法,这样会抛出空指针异常,但是静态方法可以被一个值为null的引用类型变量调用而不会抛出空指针异常。

5.4K50
您找到你想要的搜索结果了吗?
是的
没有找到

PHP 静态属性和静态方法

静态属性和方法的定义和调用 php_learning/oop 目录下新建一个 static.php 文件,编写一段测试代码如下: <?...return self::$WHEELS; } } PHP ,我们通过 static 关键字来修饰静态属性和方法,这里我们定义了一个静态属性$WHEELS 和静态方法 getWheels...静态方法调用静态属性/方法 另外,我们前面提到不能在静态方法通过 $this 调用静态属性/方法,但是静态方法可以通过 self:: 调用静态属性/方法: class Car {...sprintf 函数返回格式化字符串,然后魔术方法 __toString 方法调用,作为该非静态方法的返回值。...后期静态绑定 后期静态绑定(Late Static Bindings)针对的是静态方法调用,使用该特性时不再通过 self:: 引用静态方法,而是通过 static::,如果是定义它的类调用,则指向当前类

4.2K10

Python通过对象不能调用方法静态方法的解析

一、类方法静态方法的定义了解Python通过对象不能调用方法静态方法之前,首先需要明确类方法静态方法的定义。...类方法静态方法都是定义的一种方法,可以通过类名直接调用,而不需要先创建该类的实例。...二、对象调用方法的原理Python,对象调用方法的原理可以简单概括为:Python通过找到方法所在的类,并将该对象作为第一个参数(通常用self)传入方法。...三、不能通过对象调用方法静态方法的原因既然Python对象调用方法的原理是将该对象作为第一个参数传入方法,那么为什么不能通过对象调用方法静态方法呢?...3.2 静态方法静态方法,不需要传入self或cls,因此,如果我们通过对象调用静态方法,实际上传入的参数是该对象本身,而不是任何类或实例。这就意味着,静态方法无法从其中访问类或实例的属性或方法

62530

php静态延迟方法,phpstatic延迟静态绑定_PHP教程

} } 这段代码正常工作是没问题,但大量重复的代码会很烦人 我不想在每个子类添加create方法,如果把create方法放在超类U,代码可能是 abstract class U{ public...php5.3之前,在这方面都有严格的限制,产生过很多笨拙的解决方案,php5.3引入了延迟静态绑定 及使用 关键字 static static类似self,但它指的是被调用的类而不是包含类。...以下例子u1::create将生成u1对象,而不是实例化U对象 abstract class U{ public static function create(){ return new static...} class u1 extends U{ } class u2 extends U{ } u1::create(); static不仅可以用于实例化,和self,parent一样还可以作为静态方法调用标识符...,甚至是从非静态上下文中调用 abstract class U{ private $group; public function __construct(){ $this->group=static

1K10

为什么静态方法不能使用this

JVM的运行时数据区中有个虚拟机栈(或Java栈),它的里面是由栈帧'叠加'而成.栈帧由局部变量表,操作数栈,动态连接,方法返回地址等组成. 那么我们就从局部变量表角度解答下这个问题....下面是测试代码,一个静态方法query,一个普通方法shadow,这两个方法的参数和函数体完全一样. // 静态方法 public static void query(String year) {...int month = 12; String address = "Jiangsu"; System.out.println(address); } // 普通方法 public void...query方法的局部变量表,如下 shadow方法的局部变量表,如下 我们发现,非静态方法shadow的局部变量表中有this,而在静态方法query的局部变量表没有this....普通方法,它的局部变量表的第一个槽存放了this, 而静态方法的局部变量表没有存放this.

1.9K30

PHP面向对象-静态属性和静态方法(二)

如果您需要在静态属性或方法访问非静态属性或方法,则需要使用“self”关键字来引用当前类。静态属性和方法的可见性必须是公共的(public)。...这意味着,如果子类定义了与父类相同名称的静态属性或方法,则子类的属性或方法将隐藏父类的属性或方法,而不是覆盖它们。静态属性和方法无法访问非静态常量。...这意味着,静态属性和方法脚本运行期间只被实例化一次,并在整个脚本运行期间保留其值。如果您需要在脚本运行期间更改静态属性或方法的值,则必须显式地重新分配它们。...静态属性和方法的示例下面是一个简单的示例,展示了如何在PHP中使用静态属性和方法:class Car { public static $numCars = 0; public $make; public...构造函数还使用静态属性$numCars来跟踪创建的车辆数。脚本,我们创建了两个Car实例,并使用静态属性$numCars和getNumCars()来获取创建的车辆数。

63631

PHP面向对象-静态属性和静态方法(一)

静态属性静态属性是与类本身相关的数据。PHP静态属性使用关键字“static”定义,并且可以通过类名直接访问。静态属性与类的实例无关,因此可以不实例化类的情况下使用。...以下是一个简单的PHP类示例,其中包含一个静态属性:class Counter { public static $count = 0; public function increment() {...这意味着,无论类的哪个方法修改静态属性的值,该值都将被保留,直到脚本运行结束或被显式地重新分配。静态方法静态方法是与类本身相关的行为。...PHP静态方法使用关键字“static”定义,并且可以通过类名直接调用静态方法也与类的实例无关,因此可以不实例化类的情况下使用。...以下是一个简单的PHP类示例,其中包含一个静态方法:class Calculator { public static function add($a, $b) { return $a + $b;

74231

PHP静态方法与普通方法用法实例分析

本文实例讲述了PHP静态方法与普通方法用法。分享给大家供大家参考,具体如下: 代码 <?...php class TestClass { public $attributeone="one"; public function TestFunctionOne(){...- attributeone; print_r($attributeone); // 非静态方法 $publicone- TestFunctionOne(); // 静态不需要新建对象 直接可以使用类...对比 静态方法 : 1.从程序运行开始 就实例生成内存 ,所以可以直接调用,效率会高很多,但静态内存是有限制的,实例太多,程序会启动不了,2.静态内存会常驻 适用于多次频繁调用的 非静态方法: 1.实例方法开始生成内存...,调用时申请零散的内存,所以效率会慢很多 , 2.非静态的用完就释放了 不会常驻 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全

59331

静态静态方法

C#的类可以包含两种方法静态方法和非静态方法。   使用了static 修饰符的方法静态方法,反之荝是非静态方法。   ...1.static方法是类的一个成園方法,属于整个类,即不用創建任何对象也可以直接调用!   static内部只能出现static变量和其他static方法!...洏且static方法还不能使用this....等关键字..因为它湜属于整个类!   2.静态方法效率上要比实例化高,静态方法的缺点是不洎动进垳销毁,洏实例化的则可以做销毁。   ...3.静态方法静态变糧创建后始终使用哃一赽内存,而使用實例的方式会创建多个内存.   4.C#方法有两种:实例方法,靜态方法.   ...类的方法笩码只有一份,它们的生命周期和类是一致哋.实例方法是通过对象名调用的,静态方法与类关联而不是与对象名关联.   5.哪么程序狆什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据

1.4K20

PHP静态的几种方法

一直在做php的开发工作.开发的过程老早就听说了“伪静态”这一说。但是一直没有对其进行了解。 今天终于下定决定 要好好的了解下这方面的内容。...首先,什么是伪静态: 伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录并没有必要实现存在重写的页面。...写伪静态规则时,应保留有价值的参数,不要将有价值的参数全部精简掉,如前面例子的 news.php?...8、有何不解的地方或是有不同的看法欢迎提出 关于伪静态和真静态的评论 真正的静态化和伪静态还是有本质的区别的。为浏览用户处理一个纯粹html和一个调用多个数据的phpCPU的使用率方面明显前者少。...转一个 php静态的实现四法: //伪静态方法一 // localhost/php100/test.php?

4.2K80

PHP 对象自动调用方法:__set()、__get()、__tostring()

但是,对属性的读取和赋值操作是非常频繁的,因此 PHP5,预定义了两个函数 “__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法 “__unset...我们为每个属性做了设置和获取的方法PHP5给我们提供了专门为属性设置值和获 取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的, 而是我们手工添加到类里面去的,...; //人的年龄 //__get()方法用来获取私有属性 public function __get($property_name) { echo "直接获取私有属性值的时候,自动调用了这个...php class Account{ public $user=1; private $pwd=2; // 自定义的格式化输出方法 public function toString(){ return...实际上,PHP的toString魔术方法的设计原型来源于 Java。Java也有这么一个方法,而且Java,这个方法被大量使用,对于调试程序比较方便。

2.4K40

详解Java静态方法

参考链接: Java静态类 定义: 类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存;而非静态方法属于对象的具体实例,只有类的对象创建时在对象的内存才有这个方法的代码段。...原因: 因为静态方法静态数据成员会随着类的定义而被分配和装载入内存,而非静态方法和非静态数据成员只有类的对象创建时在对象的内存才有这个方法的代码段。 ...static{             a=10;         }         //静态方法只能访问静态数据成员         public static int getStatic()        ...        //非静态方法可以访问静态方法和非静态方法         public int get()         {             getT();             getStatic...();             t=a;//非静态方法可以访问非静态数据成员和静态数据成员             return t;         }     } } 总结: (1)static修饰的静态方法会随着类的定义而被分配和装载入内存

79420
领券