카테고리 없음

C#의 클래스, 객체, 생성자, 접근제한자, static 한정자

이황충 2024. 7. 1. 19:49

유니티 게임개발캠프 TIL 47일차

 

클래스와 객체

래스:

  • 클래스는 객체를 생성하기 위한 템플릿(청사진)입니다. 클래스는 데이터(속성)와 행동(메서드)를 정의하여 객체의 구조와 행동을 규정합니다.
public class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }

    public void DisplayInfo()
    {
        Console.WriteLine($"Car Make: {Make}, Model: {Model}, Year: {Year}");
    }
}
 

객체:

  • 객체는 클래스에서 정의한 내용을 기반으로 생성된 인스턴스입니다. 객체는 클래스의 속성과 메서드를 포함하는 실체입니다.
class Program
{
    static void Main(string[] args)
    {
        Car car1 = new Car();
        car1.Make = "Genesis";
        car1.Model = "G70";
        car1.Year = 2020;
        car1.DisplayInfo();
    }
}

생성자

  • 생성자(Constructor):
    • 생성자는 클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드입니다. 객체의 초기 상태를 설정하는 역할을 합니다.
    • 생성자의 이름은 클래스의 이름과 동일하고, 반환 타입을 가지지 않습니다.
    • 생성자는 매개변수를 가질 수 있으며, 이를 통해 객체의 속성을 초기화할 수 있습니다.
    • 클래스는 여러 개의 오버로드된 생성자를 가질 수 있습니다.
public class Car
{
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }

    // 생성자
    public Car(string make, string model, int year)
    {
        Make = make;
        Model = model;
        Year = year;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Car car1 = new Car("Genesis", "G70", 2020);
        car1.DisplayInfo();
    }
}

 

접근제한자

  • 접근제한자(Access Modifiers):
    • 접근제한자는 클래스, 메서드, 변수 등에 대한 접근 권한을 제어하는 키워드입니다.
    • public:
      • 모든 클래스와 객체에서 접근이 가능합니다.
    • private:
      • 같은 클래스 내에서만 접근이 가능합니다.
    • protected:
      • 같은 클래스이거나 상속받은 클래스에서 접근이 가능합니다.
    • internal:
      • 같은 어셈블리(프로젝트) 내에서만 접근이 가능합니다.

static 한정자

  • static 한정자(Static Modifier):
    • static 한정자는 클래스의 멤버(변수, 메서드)에 적용되어, 해당 멤버가 특정 클래스의 인스턴스에 속하지 않고 클래스 자체에 속하도록 합니다.
    • static 변수는 클래스의 모든 인스턴스가 공유하며, 클래스가 처음 로드될 때 한 번만 메모리에 할당됩니다.
    • public static int TotalCars;
    • static 메서드는 클래스 인스턴스를 생성하지 않고 클래스 이름을 통해 직접 호출할 수 있습니다.
    • public static void ShowTotalCars()
      {
          Console.WriteLine($"Total Cars: {TotalCars}");
      }
    • static 클래스는 인스턴스를 생성할 수 없으며, 모든 멤버가 static이어야 합니다.
    • public static class Utilities
      {
          public static void PrintMessage(string message)
          {
              Console.WriteLine(message);
          }
      }
    • 예제:
    • public class Item
      {
          private static int itemCount = 0;
          public string Name { get; set; }
      
          public Item(string name)
          {
              Name = name;
              itemCount++;
          }
      
          public static int GetItemCount()
          {
              return itemCount;
          }
      }
      
      class Program
      {
          static void Main(string[] args)
          {
              Item item1 = new Item("Item1");
              Item item2 = new Item("Item2");
              Console.WriteLine("Total Items Created: " + Item.GetItemCount());
          }
      }
  •