代码之家  ›  专栏  ›  技术社区  ›  redconservatory

公共静态方法与公共方法

  •  7
  • redconservatory  · 技术社区  · 15 年前

    公共静态方法和公共方法有什么区别?为什么要使用公共静态方法?

    4 回复  |  直到 10 年前
        1
  •  11
  •   Stray    15 年前

    数学类的方法是静态的。所以,在做的时候

    Math.round(average)
    

    数学类本身不会因您所做的而改变——它只返回一个值或对您传递的值执行操作。

    所以,静态方法对实用程序很有用。像这样的事情

    StringUtils.removeWhitespaceFrom(textContent:String):String
    

    BrowserUtils.openInNewWindow(url:String):void
    

    对于其他任何事情,使用静态方法是非常不寻常的。不要使用像“getInstance()”这样的静态来创建单例——而是查看依赖项注入的框架。

        2
  •  4
  •   arcyqwerty Lakmal Caldera    10 年前

    静态方法可以用作重载构造函数。ActionScript没有函数重载,因此有时我会编写如下内容:

    public class Foo {
        public static function fromBar(bar:Bar):Foo {
            var foo:Foo = new Foo();
            ... //initializing foo object from bar
            return foo;
         }
    
        public static function fromBaz(baz:Baz):Foo {
            var foo:Foo = new Foo();
            ... //initializing foo object from baz
            return foo;
        }
    }
    
        3
  •  3
  •   Ken Struys    15 年前

    静态方法是不特定于类(对象)的任何实例的方法,它们是不允许包含此引用的方法,您可以直接通过类(而不是对象实例)访问它们。

        4
  •  2
  •   Muhammad Irfan    15 年前

    为了使您的概念清晰,假设您想知道类被实例化了多少次,那么每次创建对象时,您都将在类构造中使用静态变量计数器。

    然后您必须使用静态方法来访问此数据,否则您可以将变量声明为public或default,并使用类名访问它,但这违反了OOP主体。下面是一个小例子

    公车 {

    私有静态无功计数器:int=0;

    专用功能车()计数器++;

    公共静态函数returnTotalCarInstances():int { 返回计数器; }

    }

    静态变量有它们的优点,这就是为什么在大多数编程语言中都提供静态变量的原因。计数实例是静态变量的小用途。它们的使用范围要大得多。主要的一点是,它用于在类的所有对象之间全局共享数据。