什么时候应该在课堂上使用静态方法,有什么好处?

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

Q:一个方法中的静态variables即使在执行方法时也保存它的值,但只能在其包含的方法中访问,但静态方法的最佳定义是什么?

问:调用静态方法而不创build该类的对象是静态方法的唯一好处?

问:静态方法的可访问范围是多less?

谢谢

您对静态variables的描述更适合于C中的静态variables。面向对象术语中的静态variables的概念在概念上是不同的。 我在这里从Java的经验。 静态方法和字段在概念上不属于某个事物的实例时非常有用。

考虑一个Math类,其中包含一些常见的值,如Pi或e,以及一些有用的函数,如sin和cos。 创build单独的实例来使用这种function是没有意义的,因此静态效果更好:

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

在OO语言中(同样,从Java的angular度来看)函数,或更好地称为方法,不能有静态局部variables。 只有类可以有静态成员,正如我所说,与C中静态的想法相比,它们很less

静态方法不会将“this”指针传递给对象,因此它们不能引用非静态variables或方法,但可能因此在运行时效率更高(更less的参数并且没有创build和销毁对象的开销)。

它们可以被用来把连贯的方法归类到一个单一的类别中,或者对类别中的对象进行操作,比如工厂模式。

静态方法的语法(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()方法不使用任何类variables,因此不需要Number的实例。

从本质上讲,静态方法让你用面向对象的语言编写过程代码。 它可以让你调用方法,而不必先创build一个对象。

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

这个维基百科条目很好地解释了静态方法: http : //en.wikipedia.org/wiki/Method_(computer_science)#Static_methods

静态方法的一个常见用法是使用命名的构造函数方式。 请参阅: http : //www.parashift.com/c++-faq-lite/ctors.html#faq-10.8 。

静态variables和静态方法绑定到类,而不是类的实例。

静态方法不应该包含“状态”。 任何与状态有关的东西都应该绑定到一个实例化的对象,而不是类。

PHP中的静态方法 :

可以在不创build类对象的情况下调用。

只能调用静态方法和函数。

当你希望在类的不同对象之间共享一些信息时,使用静态variables。由于variables是共享的,每个对象都可以更新它,更新的值也可以用于所有其他对象。 由于静态variables可以被共享,所以这些通常被称为类variables。

静态元素可以从任何上下文(即脚本中的任何地方)访问,因此您可以访问这些方法,而无需将类的实例从对象传递到对象。

静态元素在类的每个实例中都可用,因此您可以设置要为types的所有成员提供的值。

进一步阅读链接 !