请任何人告诉我静态和非静态类和方法之间的区别。
<?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