[C#] 클래스 객체 그리고 프로퍼티

2025. 1. 31. 20:53·Language/C#

클래스?

  • 클래스는  객체를 만들 때 사용하는 설계도 같은 개념
  • 붕어빵 만들기에서 붕어빵 틀과 비슷함

 

객체?

  • 클래스의 인스턴스이다. 실체화된 형태라고 할 수 있다.
  • 객체는 클래스로부터 생성되며, 각 객체는 독립적인 상태를 가지고 있다. 즉, 객체마다 고유한 데이터를 가질 수 있다.
  • 붕어빵 만들기에서 붕어빵 역할

 

## 사용법

namespace ConsoleApp3
{
    internal class Program
    {
        public class Knight
        {
            private int hp;
            private int mp;

            public Knight(int hp, int mp)
            {
                this.hp = hp;
                this.mp = mp;
            }


            public void PrintInformation()
            {
                Console.WriteLine($"체력은 {hp}이고 마나는 {mp}만큼 있다!");
            }
        }
        static void Main(string[] args)
        {
            Knight knight = new Knight(100, 200);
            knight.PrintInformation();

        }
    }
}

프로퍼티?

객체의 필드에 직접 접근 하지 않고 값을 세팅 또는 반환 할 수 있는 메소드 조합이다.

필드에 대한 접근 제어와 데이터 유효성 검사 등을 수행할 수 있습니다.

  • 자동 프로퍼티 (Auto Property)
    • 자동 프로퍼티는 프로퍼티를 간단하게 정의하고 사용할 수 있는 편리한 기능
    • 필드의 선언과 접근자 메서드의 구현을 컴파일러가 자동으로 처리하여 개발자가 간단한 구문으로 프로퍼티를 정의

 

## 사용법1

접근제한자 필드타입 이름{

 	get {
  		return 필드명;
  	}

	set{
    	필드명 = value;
    }
}

 

## 예시

namespace ConsoleApp3
{
    internal class Program
    {
        public class Knight
        {
            private int hp;
            private int mp;
            private int age;
            public int HP
            {

                get
                {
                    return hp;
                }
                set
                {
                    hp = value; // 값 세팅
                }
            }


            public int MP
            {

                get; // 자동 프로퍼티
                set; // 자동 프로퍼티
            }
            public void PrintInformation()
            {
                Console.WriteLine($"체력은 {hp}이고 마나는 {mp}만큼 있다!");
            }

            public int AGE
            {
                get
                {
                    return age;

                }

                set
                {
                    if (value > 50) // 유효성 검사
                    {
                        Console.WriteLine("네 나이는 너무 많아, 기사가 될 수 없다. 거절한다");
                    }
                    else
                    {
                        age = value;
                        Console.WriteLine($"기사 자격이 되는 {age}세 나이군.");
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            Knight knight = new Knight();
            knight.HP = 100; // 간접적으로 세팅 가능
            knight.MP = 200;
            Console.WriteLine($"기사의 체력은 {knight.HP} 이다! 기사의 마나는 {knight.MP}이다~ "); // 원하는 멤버 변수를 간접적으로 가져올 수 있음

            Console.WriteLine();
            Console.Write("나이를 입력하시오 >> ");
            string input = Console.ReadLine();
            int age = int.Parse(input);
            knight.AGE = age;
        }
    }
}

 

'Language > C#' 카테고리의 다른 글

[C#] partial  (0) 2025.02.04
[C#] Array.Resize() 배열 크기 변경하는 방법  (0) 2025.02.03
[C#] 객체지향 프로그래밍  (0) 2025.01.31
[C#] TicTacToe 게임  (0) 2025.01.31
[C#] String.Format  (0) 2025.01.27
'Language/C#' 카테고리의 다른 글
  • [C#] partial
  • [C#] Array.Resize() 배열 크기 변경하는 방법
  • [C#] 객체지향 프로그래밍
  • [C#] TicTacToe 게임
Xenawn
Xenawn
제넌 게임개발 블로그
  • Xenawn
    Xenawn
    Xenawn
  • 전체
    오늘
    어제
    • 분류 전체보기 (86)
      • Language (24)
        • C++ (4)
        • C# (20)
      • Game Engine (32)
        • Unity (19)
        • Unity API (1)
        • Game Project (12)
      • Git (3)
      • Algorithm (17)
        • BOJ [C++] (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unity
    fps cam
    BOJ
    객체
    포션
    FizzBuzz
    알고리즘
    걸음fps
    스파르타내일배움캠프 #스파르타내일배움캠프til
    문자열 보간
    카메라 움직임
    CPP
    블랙잭
    headbob
    1181
    FPS
    POTION
    c#
    string format
    내일배움캠프
    게임개발
    백준
    프레임
    C++
    유니티
    프로퍼티
    배열
    클래스
    리스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Xenawn
[C#] 클래스 객체 그리고 프로퍼티
상단으로

티스토리툴바