오늘의 학습키워드
"객체지향 프로그래밍과 고급 문법"
✏️오늘 배운 새로운 내용
- 객체지향 프로그래밍
- 캡슐화 : 관련된 데이터와 기능을 하나로 묶는것
- 상속 : 기존의 클래스를 확장하여 새로운 클래스를 만드는 메커니즘,코드의 중복을 줄일 수 있다.
▼상속의 예시
Dog와 Cat 클래스는 Animal의 클래스를 상속받아 PrintInfo 함수를 사용할 수 있게 된다.
class Animal
{
public string Name;
public void PrintInfo()
{
Console.WriteLine($"동물의 이름은{Name}입니다");
}
}
class Dog : Animal
{
public void Woof()
{
Console.WriteLine($"멍");
}
}
class Cat : Animal
{
public void Meow()
{
Console.WriteLine($"냥");
}
}
static void Main(string[] args)
{
Cat cat = new Cat();
cat.Name = "Cookie";
cat.PrintInfo();
cat.Meow();
Dog dog = new Dog();
dog.Name = "Choco";
dog.PrintInfo();
dog.Woof();
}
[출력]
동물의 이름은Cookie입니다
냥
동물의 이릉은Choco입니다
멍
- 다형성 : 하나의 인터페이스나 기능을 다양한 방식으로 구현하거나 사용할 수 있는 능력을 의미
▼오버로딩의 예시
static int Plus(int a, int b)
{
return a + b;
}
static float Plus(float a, float b)
{
return a + b;
}
static void Main(string[] args)
{
Plus(1,2);
Plus(1.5f, 2.5f);
}
▼오버라이딩의 예시
class Monster
{
public virtual void Attack()
{
Console.WriteLine("기본 공격");
}
}
class Goblin : Monster
{
public override void Attack()
{
Console.WriteLine("고블린 박치기");
}
}
static void Main(string[] args)
{
Goblin goblin = new Goblin();
goblin.Attack(); // 고블린 박치기로 출력
}
- 추상화 : 복잡한 시스템이나 개념을 단순화하여 필요한 기능에 집중
▼추상화의 예시
Attack 함수의 구현을 자식 클래스에게 맡긴다.
abstract class Monster
{
public abstract void Attack();
}
class Goblin : Monster
{
public override void Attack()
{
Console.WriteLine("고블린 박치기");
}
}
static void Main(string[] args)
{
Goblin goblin = new Goblin();
goblin.Attack();
}
- 객체 : 클래스로부터 생성된 실체
- 클래스와 구조체의 차이점
- 구조체는 값 형식, 클래스는 참조 형식
//구조체
Person person1;
person1.Name = "John";
person1.Age = 25;
//클래스
Person p = new Person();
p.Name = "John";
p.Age = 30;
- 구조체와 달리 클래스는 단일 상속 및 다중 상속 가능
- 제너릭 : 클래스나 메서드를 일반화시켜 다양한 자료형에 대응할 수 있는 기능 , <T>형태의 키워드를 이용
- out : 메서드에서 반환 값을 매개변수로 전달하는 경우에 사용
- ref : 메서드에서 매개변수를 수정하여 원래 값에 영향을 주는 경우에 사용
⚠️주의사항
ref는 메서드 내에서 변수의 값을 직접 변경 가능하기 때문에 주의가 필요하다.
ref는 값의 복사 없이도 매서드 내에서 접근 가능하기 때문에 성능성 이점이 있지만, 너무 많은 매개변수를 전달하면코드의 가독성이 떨어지고 유지보수가 어려워짐.
out매개변수는 메서드 내에서 반드시 값을 할당해야한다.
💭오늘의 회고
과제를 진행하면서 배운 코드를 쓰고 복습을 해야겠다.
객체지향구조를 잘 써서 버그 발생을 적게 내고 가독성이 좋은 코드를 작성하는 개발자가 되고싶다.
'TIL' 카테고리의 다른 글
🔥내일배움캠프 9일차 TIL (0) | 2025.02.04 |
---|---|
🔥내일배움캠프 8일차 TIL (1) | 2025.02.03 |
🔥내일배움캠프 6일차 TIL (0) | 2025.01.27 |
🔥내일배움캠프 5일차 TIL (0) | 2025.01.24 |
🔥내일배움캠프 4일차 TIL (0) | 2025.01.23 |