首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该在什么时候在类中使用静态方法,有什么好处?

我应该在什么时候在类中使用静态方法,有什么好处?
EN

Stack Overflow用户
提问于 2010-01-17 14:10:45
回答 10查看 57.3K关注 0票数 66

我有静态变量的概念,但是在类中使用静态方法有什么好处呢?我曾经在一些项目中工作过,但我没有创建静态的方法。每当我需要调用类的方法时,我都会创建该类的对象并调用所需的方法。

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

Q:调用静态方法而不创建类的对象是静态方法的唯一好处吗?

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

谢谢

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-01-17 14:19:34

您对静态变量的描述更适合于C中的描述。面向对象术语中的静态变量的概念在概念上是不同的。我在这里借鉴了Java的经验。当静态方法和字段在概念上不属于某物的实例时,它们很有用。

考虑一个Math类,它包含一些常见的值,如Pi或e,以及一些有用的函数,如sin和cos。创建单独的实例来使用这种功能真的没有意义,因此它们作为静态功能更好:

// 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的角度来看),函数,或者更广为人知的方法,不能有静态局部变量。只有类才能有静态成员,正如我所说的,这与C中的静态概念几乎没有什么相似之处。

票数 63
EN

Stack Overflow用户

发布于 2010-01-18 21:46:45

静态方法不会将"this“指针传递给对象,因此它们不能引用非静态变量或方法,但在运行时可能会更有效(参数更少,创建和销毁对象没有开销)。

它们可用于将内聚方法分组到单个类中,或作用于其类的对象,例如在工厂模式中。

票数 17
EN

Stack Overflow用户

发布于 2010-01-20 20:18:43

静态方法的语法(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的实例。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2080150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档