公共和公共静态的区别?

时间:2011-04-03 02:07:04

标签: php class function

静态意味着什么?

我知道公共意味着它可以从课外访问,而私有只能从课程内部访问

5 个答案:

答案 0 :(得分:38)

静态意味着可以在不实例化类的情况下访问它。这对常数很有用。

静态方法不需要对对象的状态产生影响。除参数外,它们还可以包含局部变量。

答案 1 :(得分:32)

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

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

私有:专用限制仅对定义的类的可见性 该项目。

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

final :Final关键字会阻止子类覆盖a 方法通过在final中加上前缀。如果班级本身是 被定义为最终然后它不能被扩展。

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

volatile :可能被多个并发修改的变量 线程应该声明为volatile。声明变量的变量 将不会被编译器优化,因为它们的值可以更改为 任何时候。

答案 2 :(得分:15)

来自http://php.net/manual/en/language.oop5.static.php

  

声明类属性或方法   因为静态使它们可以访问   无需实例化   班级。声明为的财产   静态无法访问   实例化的类对象(尽管是   静态方法可以)。

答案 3 :(得分:4)

一些例子...... 当使用static关键字时,我们不能使用$ this ..

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();
  

致命错误:在

中不在对象上下文中时使用$ this

答案 4 :(得分:0)

示例:

public class Methods_Test1 
{   
    public static void Display(String Name)
    {
        System.out.println("Hello There " + Name);
        System.out.println("I am from Display method");
    }


    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter name");
        String name = sc.next();
        Obj.Display(name);

    }

可以作为静态方法访问的公共静态void Display(String name)方法,可以在其自己的类中访问,而无需创建该类的对象,而对于外部类,该方法的行为与公共相同,可以通过创建对象来访问