Оглавление
5. защищенный внутренний (защищенный внутренний):
10. переопределить (переписать):
11. запечатанный (запечатанный):
12. только для чтения (только для чтения):
В Unity для изменения классов, методов, переменных и свойств включены следующие модификаторы:
1. общественный (публичный):
public class MyClass
{
public int myVariable;
public void MyMethod()
{
// Method body
}
}
⚠️: Модификатор `public` указывает, что элемент (переменная, метод, свойство и т. д.) является общедоступным и доступен из любого места.
2. частный (частный):
public class MyClass
{
private int myVariable;
private void MyMethod()
{
// Method body
}
}
⚠️: Модификатор `private` означает, что к члену можно получить доступ только внутри класса, который его определяет, и другие классы не могут получить к нему прямой доступ.
3. защищенный (защищенный):
public class MyBaseClass
{
protected int myVariable;
protected void MyMethod()
{
// Method body
}
}
public class MyDerivedClass : MyBaseClass
{
void AnotherMethod()
{
myVariable = 10; // 可以在派生类中访问基类的 protected 成员
MyMethod(); // 可以在派生类中调用基类的 protected 方法
}
}
⚠️: модификатор «защищенный» означает, что к члену можно получить доступ внутри класса, в котором он определен, и в производных классах этого класса, но не напрямую в других классах.
4. Внутренний (внутренний):
internal class MyClass
{
internal int myVariable;
internal void MyMethod()
{
// Method body
}
}
⚠️: модификатор `internal` указывает, что член доступен в любом месте в той же сборке, но не виден для классов, которые не находятся в той же сборке.
5. защищенный внутренний (защищенный внутренний):
public class MyClass
{
protected internal int myVariable;
protected internal void MyMethod()
{
// Method body
}
}
⚠️: Модификатор «защищенный внутренний» сочетает в себе поведение «защищенного» и «внутреннего», указывая, что к члену можно получить доступ в любом месте в той же сборке, а также в производных классах.
6. статический (статический):
public class MyClass
{
public static int myVariable;
public static void MyMethod()
{
// Method body
}
}
⚠️: Модификатор `static` указывает на то, что элемент принадлежит самому классу, а не экземпляру класса. Доступ к статическим членам можно получить непосредственно по имени класса без создания экземпляра класса.
7. const (постоянная):
public class MyClass
{
public const float PI = 3.14159f;
}
⚠️: Модификатор `const` используется для объявления констант, то есть значений, которые нельзя изменить после присвоения. Константы должны быть инициализированы при объявлении и могут относиться только к примитивным типам данных или типам перечисления.
8. реферат (аннотация):
public abstract class MyBaseClass
{
public abstract void MyMethod();
}
public class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️: модификатор abstract используется для объявления абстрактных классов и абстрактных методов. Абстрактные классы не могут быть созданы, только унаследованы. Абстрактные методы объявляются в абстрактном классе и должны быть реализованы в производных классах.
9. виртуальный (виртуальный):
public class MyBaseClass
{
public virtual void MyMethod()
{
// Method body
}
}
public class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️: модификатор `virtual` используется для объявления виртуальных методов. Виртуальный метод можно переопределить (используя ключевое слово override) в производном классе, тем самым изменив его поведение.
10. переопределить (переписать):
public class MyBaseClass
{
public virtual void MyMethod()
{
// Method body
}
}
public class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️: модификатор override используется для переопределения виртуального метода базового класса в производном классе. Переопределяющий метод должен иметь то же имя, тип возвращаемого значения и список параметров, что и метод базового класса.
11. запечатанный (запечатанный):
public class MyBaseClass
{
public virtual void MyMethod()
{
// Method body
}
}
public sealed class MyDerivedClass : MyBaseClass
{
public override void MyMethod()
{
// Method body
}
}
⚠️: модификатор `sealed` используется для предотвращения дальнейшего наследования или переопределения класса или метода производными классами. Классы с атрибутом «sealed» нельзя использовать в качестве базовых классов, а методы с атрибутом «sealed» нельзя переопределить.
12. только для чтения (только для чтения):
public class MyClass
{
public readonly int myVariable;
public MyClass(int value)
{
myVariable = value;
}
}
⚠️: модификатор `readonly` используется для объявления полей только для чтения. Значение поля только для чтения может быть инициализировано только во время объявления или в конструкторе и не может быть изменено впоследствии.
13. летучий (изменяемый):
public class MyClass
{
public volatile bool flag;
}
⚠️: модификатор volatile используется для объявления volatile полей. Доступ к изменчивым полям не будет оптимизирован компилятором для обеспечения правильного чтения и записи поля в многопоточной среде.
14. внешний (внешний):
public class ExternalClass
{
[DllImport("myLibrary.dll")]
public static extern void MyMethod();
}
⚠️: Модификатор extern используется для объявления внешних методов. Внешний метод — это функция, предоставляемая внешней библиотекой (например, динамической библиотекой).После объявления с помощью `extern` метод может быть вызван в коде C#.
15. событие (событие):
public class EventExample
{
public event Action OnEvent;
public void TriggerEvent()
{
if (OnEvent != null)
{
OnEvent.Invoke();
}
}
}
⚠️: Модификатор `event` используется для объявления событий. События — это особый вид делегирования, который позволяет классам уведомлять другие классы о событиях, происходящих при определенных обстоятельствах.