任何人都可以帮助我在此代码中静态和非静态类和方法之间的区别是什么


Can any one help me out In this code what is the diffrence between static and non-static class and method

请任何人告诉我静态和非静态类和方法之间的区别。

 <?php
  class  a
{
public  static function sum($a,$b)
    {
        return $a+$b;
    }
}

$obj = new a();
echo $obj->sum(20,30);
echo $c=a::sum(10,10);
?>

静态方法对于类的每个实例都是相同的。它附加到类本身。非静态(实例)方法附加到对象,即类的实例。功能区别在于实例方法可以访问实例属性,而静态方法则无法访问实例属性,因为它存在于类级别。

以下是 PHP 手册的摘录

将类属性或方法声明为静态可以使它们无需实例化即可访问。

声明为静态的属性不能使用实例化的类对象访问(尽管静态方法可以)。

根据定义,静态函数不能也不依赖于类的任何实例属性。也就是说,它们不需要执行类的实例。从某种意义上说,这意味着函数不(也永远不需要)依赖于类的成员或方法(公共或私有)。

我的代码不是php。它更像是一种通用表示。假设您想找到一个数字的正弦。您很可能会通过执行类似 Math.sine(30) .您会看到我如何在 Math 类中访问正弦方法而不创建 Math 类的实例。这些方法是静态方法。如果正弦不是静态方法,那么我必须做类似的事情

Math m = new Math(); // create instance
m.sine(30); // call instance method

对于静态方法

Math.sine(30) // static call