2015-08-19 3 views
0

Принимая во внимание следующей структуру класса:Почему можно вызвать статические методы нестатического класса?

[ОБЩЕСТВЕННЫЕ нестатический КЛАСС]

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?

+2

потому что статично не нужно создавать объект из него – MstfAsan

+1

прав .. но мой класс не является статичным .. Поэтому не требуется, чтобы класс имел статические методы статического права? – IgoR

+2

не требуется статический класс для статических методов – MstfAsan

ответ

1

От here

Статического класс в основном такие же, как нестатический класс, но есть одна разницы: статический класс не может быть создан

Тем факт, что это не так статический класс не влияет на способ использования статических методов.

+0

Спасибо! Это тоже помогает мне https://msdn.microsoft.com/pt-br/library/ms998558.aspx - Singleton – IgoR

+0

Sidenote, я думаю, что это смешно, как говорят документы: «Это в основном то же самое», тогда он говорит, что не может быть инстанцированным, что является ОГРОМНОЙ разницей и делает его полностью не «в основном тем же». Классический Microsoft. – EmilioPelaez

1

Статические методы часто используются в нестационарном классе для служебных методов. Они также могут использоваться для маскировки модификаторов и конструкторов на неизменяемых типах, возвращая новый объект из запрошенной манипуляции. См. Строку java.

+0

Спасибо, брат! Мило :) – IgoR

1

Трудность возникает из-за того, что «статический» имеет несколько иное значение для методов и классов.

  1. Статические классы не могут быть созданы
  2. Статические методы связаны с классом, а не объектами, так что вам не нужно создавать объект для вызова статического метода. Однако не имеет значения, является ли сам класс статичным или нет.

См. Соответствующую документацию here.

0

Когда метод объявлен статический, к нему можно получить доступ до создания любых объектов его класса и без ссылки на любой объект, а нестатический класс также может содержать статические методы.

Смежные вопросы