为什么可以调用非静态类的静态方法?

时间:2015-08-19 16:44:22

标签: c# oop unity3d static-members static-classes

考虑以下类结构:

[公共非静态类]

using UnityEngine;
using System.Collections;

public class GameManager : MonoBehaviour {

    public static void Play() //STATIC METHOD
    {
        print("Play some audio!");
    }

}

另一类致电:

using UnityEngine;
using System.Collections;

public class TestClass : MonoBehaviour {

    // Use this for initialization
    void Start () {
        GameManager.Play();
    }

    // Update is called once per frame
    void Update () {

    }
}

因为可以在不实例化GameManager类的情况下调用此方法吗?

4 个答案:

答案 0 :(得分:1)

来自here

  

静态类与非静态类基本相同,但在那里   是一个区别:静态类无法实例化

它不是静态类的事实并不会影响静态方法的使用方式。

答案 1 :(得分:1)

静态方法通常用于实用方法的非静态类。它们还可以通过从请求的操作返回一个新对象,用于在不可变类型上屏蔽修饰符和构造函数。请参阅java String。

答案 2 :(得分:1)

困难来自于“静态”对于方法和类的含义略有不同。

  1. 无法实例化静态类
  2. 静态方法与类而不是对象相关联,因此您无需创建对象来调用静态方法。但是,类本身是否是静态无关紧要。
  3. 请参阅相关文档here

答案 3 :(得分:0)

当一个方法声明为 static 时,可以在创建其类的任何对象之前访问它,并且不引用任何对象,非静态类也可以包含静态方法。