static 关键字 静态属性与方法 -> :: self $this 区别

1.声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。

2.由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。

3.静态属性不可以由对象通过 -> 操作符来访问。

4.用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误。

5.就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。

访问静态变量和访问类常量类似:要么(从类的内部或外部)使用类名称,要么使用关键字self,在这两种形式后面加上范围解析操作符(::)和以$开头的静态变量名。

:: -> self $this 区别:

如果被引用的变量或者方法被声明为const或者static,那么就必须使用操作符::。

如果被引用的变量或者方法没有被声明为const或者static,那么就必须使用操作符->。

如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self。

如果从类内部访问不为const或者static变量或者方法,那么就必须使用自引用变量$this。

时间: 2024-12-09 00:20:40

static 关键字 静态属性与方法 -> :: self $this 区别的相关文章

Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)

Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)?? static修饰的在加载时是先于非静态的加载,也就是如果在static中如果调用了非静态的方法或变量会报错,因为此时非静态的方法和变量还不存在(可以这样理解) . 在静态方法中访问类的实例变量需首先进行类的实例化,除了加static修饰,还可以先new创建一个对象,通过对象去调用成员方法和变量,如new A().test(). 例如: package 静态方法访问实例变量; public class Test{

js公有、私有、静态属性和方法的区别

现下,javascript大行其道,对于网站开发人员来说,javascript是必需掌据的一门语言,但随着jquery等框架的流行和使用,许多人 对于原生javascript缺乏深入的理解,习惯了函数式的编辑风格,对于闭包.原型总是说不清道不明.对于js面向对象蹩脚的用着,而要了解js面向 对象,就必需先了解js中什么是公有方法.特权方法.静态方法 公有属性和公有方法 function User(name,age){ this.name = name;//公有属性 this.age = age;

static关键字修饰属性

static 静态的,可以修饰属性,方法,代码块(或初始化块) , 内部内 非static修饰的属性(实例变量):各个对象各自拥有一套各自的副本 static修饰属性(l类变量): 1.由类创建的所有的对象,都共用一个属性 2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用. 3.类变量随着类的加载而加载的.而且独一份 4.静态的变量可以直接通过 “类.类变量” 的形式来调用 5. 类变量的加载要早于对象,所以当有对象以后, 可以 "对象.类变量"  的使用,但是 &

js公有、私有、静态属性和方法

/* 静态方法/属性:无需实例化就可以使用,不能通过this调用,只能通过对象本身,即对象名User,实例无法调用 公有方法/属性:需要实例化才能用,静态方法无法调用 */ function User(){ this.name="happy";//公有属性 this.getname=function(){//公有方法 return this.name; } var age;//私有属性 function setAge(){//私有方法 age=1; } this.getAge=func

static关键字&&静态代码块

1.静态代码块:在类加载的时候运行,不能访问普通变量,不能存在任何方法体中: (2)静态方法:类初始化的时候加载 (3)静态变量:类初始化的时候加载2.构造代码块: (1)每次创建对象的时候都会提前调用一次构造代码块 (2)构造代码块不是优先于构造函数执行,而是依托于构造函数 对象的初始化顺序: 首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容, 当子类的静态内容执行完毕之后,再去看父类有没有构造代码块,如果有就执行父类的构造代码块, 父类的构造代码块执行完毕,接着执

类、实例、静态属性与方法

1 class Game(object): 2 # 定义最高分 类属性 3 top_score = 0 4 5 # 初始化 6 def __init__(self,name): 7 self.name = name 8 9 10 # 游戏帮助 静态方法 11 @staticmethod 12 def game_help(): 13 print("提示:不让僵尸进入家门") 14 15 # 最高分 类方法 16 @classmethod 17 def show_top_score(cls

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

static静态属性和静态方法的原理与调用技巧

这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了php中static静态属性和静态方法的调用.分享给大家供大家参考.具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就

方法的定义与调用以及static关键字的用法

一.方法的定义与使用(形参只有值传递)以下所有方法在主类中定义,并且在主方法中直接调用. 1.方法声明: 语法: [访问修饰符]  [static] 返回值类型  方法名(参数列表){ 要执行的代码 } //自定义方法 public static void print(){ System.out.println("hello"); } 当方法以void声明时,表示此方法无返回值.但是void方法仍然可以与return返回值配合使用;表示结束方法调用.java方法只有值传递 packag