【问题标题】:The difference between "public" and "public static"?“public”和“public static”的区别?
【发布时间】:2023-03-14 11:57:01
【问题描述】:

static 是什么意思?

我知道public表示可以从类外访问,而private只能从类内访问……

【问题讨论】:

  • 公共方法和属性只有在类实例化后才能访问,并通过“->”号调用。公共静态方法和属性无需实例化类即可访问,可通过“::”调用。
  • 好问题..
  • 伙计,我在 2011 年真是太笨了:x

标签: php function class oop


【解决方案1】:

例子:

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

    }

public static void Display(String name) 方法可在其自己的类中作为静态方法访问,无需创建类的对象即可访问,而对于可以通过创建对象访问的外部类,相同的方法表现为 public .

【讨论】:

  • 这里定义了 Obj 吗?我们不会出错吗?在Obj.Display(name);
【解决方案2】:

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

class Foo {
    private $foo='private';

    private function priv_func() {
        echo 'priv_method';
    }

    public static function get() {
        echo $this->foo;
        $this->priv_func();
    }
}

$obj = new Foo();
$obj->get();

致命错误:在 (...) 中不在对象上下文中时使用 $this

【讨论】:

  • 您还可以使用self 访问同一类中的静态方法和静态变量。 self::priv_func();
  • 我觉得如果这个例子有更多的解释会真的对我有帮助,因为这个页面上没有任何其他例子。不幸的是,我真的不明白你想教我什么。
【解决方案3】:

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

声明类属性或方法 因为静态使它们可以访问 无需实例化 班上。声明为的属性 静态不能访问 实例化的类对象(虽然 静态方法可以)。

【讨论】:

    【解决方案4】:

    public:公开声明的项目可以在任何地方访问。

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

    private:Private 将可见性仅限于定义的类 项目。

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

    final:final 关键字防止子类覆盖 方法通过在定义前加上final。如果类本身是 被定义为 final 则不能扩展。


    PHP 之外:

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

    volatile:一个可能被多个人同时修改的变量 线程应该被声明为 volatile。声明为 volatile 的变量 不会被编译器优化,因为它们的值可以在 随时。

    【讨论】:

    • 序列化是什么意思?
    【解决方案5】:

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

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

    【讨论】:

    • 静态有风险吗?
    • @ichimaru 静态函数没有风险,但可修改的静态变量可以。它们可能充当全局变量,这会使应用程序变得脆弱,并且难以跟踪变量被修改的位置。静态方法可以替代重复的代码,增加代码经过良好测试和正确的可能性。
    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多