我有静态变量的概念,但什么是类中的静态方法的好处。我已经在一些项目的工作,但我没有做的方法是静态的。每当我需要调用类的方法,我创建一个类的对象,并调用所需的方法。

问:的方法中的静态变量即使在执行但只能访问在其含有的方法的方法,但什么是静态方法的最佳定义持有它的值?

问:正在呼叫,而无需创建该类的对象是静态方法的唯一的好处静态方法?

问:什么是可访问的范围为静态方法?

由于

有帮助吗?

解决方案

您一个静态变量的描述更贴合于在C.发现面向对象的术语一个静态变量的概念是概念上不同的。我从这里的Java经验。当他们在概念上不属于某个实例静态方法和字段是有用的。

考虑包含像PI或E,以及类似的正弦和余弦一些有用的功能的一些常见的值的数学类。这真的没有意义创建单独的实例来使用这种功能,因此它们的静好:

// This makes little sense
Math m = new Math();
float answer = m.sin(45);

// This would make more sense
float answer = Math.sin(45);

在面向对象的语言(再次,从Java角度)的功能,或更好地称为方法,不能有静态本地变量。只有类可以有静态成员,这正如我已经说过,与C中的静态想法类似小

其他提示

静态方法不能一“这个”指针传递到一个对象,因此它们不能引用非静态变量和方法,但也可以因此在运行时更有效的(更少的参数和没有开销来创建和销毁的对象)。

它们可用于组内聚的方法成一个类,或在他们的类的对象,诸如在工厂模式采取行动。

语法(PHP)的静态方法:

<?php
class Number {
    public static function multiply($a, $b) {
        return $a * $b;
    }
}
?>

客户端的代码:

echo Number::multiply(1, 2);

哪些更有意义比:

$number = new Number();
echo $number->multiply(1, 2);

作为multiply()方法不使用任何类变量,因此不需要Number的一个实例。

实质上,静态方法让你写在面向对象的语言的程序代码。它可以让你调用方法,而无需首先创建一个对象。

您想在一个类中使用静态方法的唯一时间是在一个给定的方法不需要要创建的类的实例。当试图返回共享数据源(例如一个Singleton)或执行不修改该对象的内部状态(的String.format例如)的操作,这可能是

这维基百科条目解释静态方法非常好: HTTP://en.wikipedia。组织/维基/ Method_(computer_science)#Static_methods

静态变量和静态方法结合到类,而不是类的一个实例。

静态方法不应该包含一个“状态”。相关的状态的任何事情,应绑定到一个实例化的对象,而不是类。

的静态方法的一个常见用途是在命名构造成语。请参阅: http://www.parashift.com/c++- FAQ-精简版/ ctors.html#FAQ-10.8

在PHP 静态方法:

可以称为不创建一个类对象。

只能呼吁静态方法和功能。

当你要共享的class.As变量被共享的每个对象的不同对象之间的一些信息可以更新它的静态变量的使用和更新后的值是可用于所有其它目的以及。 为静态变量可以共享,这些往往称作类变量。

静态元素是从任何可访问的上下文(即,在脚本中任何),这样就可以访问这些方法,而无需从物体传递的类的实例为对象。

静态元素是一个类的每一个实例可用,所以可以设置要提供给一个类型的所有成员的值。

进一步阅读一个链接

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top