簡體   English   中英

為什么可以調用非靜態類的靜態方法?

[英]Why is possible to call static methods of a non-static class?

考慮以下類結構:

[公共非靜態類別]

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類的情況下調用此方法?

這里

靜態類與非靜態類基本相同,但有一個區別:靜態類無法實例化

它不是靜態類的事實並不影響靜態方法的使用方式。

靜態方法通常在實用程序方法的非靜態類中使用。 通過從請求的操作中返回新對象,它們還可用於掩蓋不可變類型的修飾符和構造函數。 請參閱java String。

困難來自這樣一個事實,即“靜態”對於方法和類的含義略有不同。

  1. 靜態類無法實例化
  2. 靜態方法與類而不是對象相關聯,因此您無需創建對象來調用靜態方法。 但是,類本身是否是靜態的都沒有關系。

請參閱此處的相關文檔。

當方法聲明為static時 ,可以在創建其類的任何對象之前對其進行訪問,並且無需引用任何對象,並且非靜態類也可以包含靜態方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM