公共和静态的区别?

问题描述:

静态是什么意思?公共和静态的区别?

我知道,它可以从类的外部访问,并且公开的,只有从类

+6

公共方法和属性只能访问类实例化后,并通过被称为“ - >”符号。公共静态方法和属性可以在不需要实例化类的情况下被访问,并且可以通过“::”来调用。 – arma 2011-04-03 02:14:27

静态意味着它可以在不实例化类访问公共交通工具。这对常量很有用。

静态方法需要对对象的状态没有影响。除参数外,它们还可以有局部变量。

内从http://php.net/manual/en/language.oop5.static.php

Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static can not be accessed with an instantiated class object (though a static method can).

public:公共声明的项目可以随处访问。

受保护:受保护的限制访问继承和父类 类(以及定义项目的类)。

私人:私人限制仅限定义 该项目的类的可见性。

static:一个静态变量只存在于本地函数范围 中,但是当程序执行离开这个范围时它不会丢失它的值。

final:Final关键字可以防止子类通过为final定义前缀final操作而覆盖 方法。如果班级本身是 被定义为最终,那么它不能被扩展。

瞬态:瞬态变量是一个变量,可能不是 被序列化。

易失性:可能会同时修改多个线程的变量 线程应声明为volatile。声明为易变的变量 不会被编译器优化,因为它们的值可随时在 处更改。

一些例子...... 当使用static关键字,那么我们就不能使用$这个..

class Foo{ 
    private $foo='private'; 
    private function priv_func(){ 
     echo 'priv_method'; 
     } 
    public static function ger(){ 
     echo $this->foo; 
     $this->priv_func(); 
     } 
    } 
//class Zero extends Foo{}; 
$obj=new Foo; 

$obj->ger(); 

Fatal error: Using $this when not in object context in

+0

您也可以使用'self'来访问同一个类中的静态方法和静态变量。 'self :: priv_func();' – 2017-08-08 10:33:52

+0

我觉得如果这个例子有更多的解释是真的帮助我,因为在这个页面上没有任何其他的例子。不幸的是,我不太明白你想教我什么。 – Eoin 2018-03-03 01:27:49