클래스?
- 클래스는 객체를 만들 때 사용하는 설계도 같은 개념
- 붕어빵 만들기에서 붕어빵 틀과 비슷함
객체?
- 클래스의 인스턴스이다. 실체화된 형태라고 할 수 있다.
- 객체는 클래스로부터 생성되며, 각 객체는 독립적인 상태를 가지고 있다. 즉, 객체마다 고유한 데이터를 가질 수 있다.
- 붕어빵 만들기에서 붕어빵 역할
## 사용법
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 |