===강의 3주차 마무리 및 과제내용===
1) 상속
기존의 클래스 (부모 클래스 또는 상위 클래스)를 확장 하거나 재사용하여 새로운 클래스 (자식 클래스 또는 하위 클래스)를 생성하는 것
자식 클래스는 부모 클래스의 멤버들을 상속받아 사용할 수 있고, 부모 클래스의 기능을 확장 및 수정 할 수 있음
장점
-코드의 재사용성
-계층 구조의 표현 - 코드 구조를 명확하게 표현 가능
-유지보수성의 향상
상속의 종류:
-단일 상속 (C#에서는 단일상속만 지원)
-다중 상속
-인터페이스 상속
2) 다형성
public class Unit
{
public virtual void Move()
{
Console.WriteLine("두발로 걷기");
}
public void Attack()
{
Console.WriteLine("Unit 공격");
}
}
public class Marine : Unit
{
}
public class Zergling : Unit
{
public override void Move()
{
Console.WriteLine("네발로 걷기");
}
}
abstract class Shape
{
public abstract void Draw();
}
class Circle
{
}
class Square
{
}
class Triangle
{
}
abstract class Shape
{
public abstract void Draw();
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
class Square : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a square");
}
}
class Triangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a triangle");
}
}
오버라이딩과 오버로딩
Overriding(오버라이딩)
=부모 클래스에서 이미 정의된 method를 자식 클래스에서 재정의하는 것
=이름, 매개변수 및 타입이 동일해야함
Overloading(오버로딩)
= 동일한 method이름을 가지지만 매개변수의 개수,타입,순서가 다른 여러개의 method들
=매개변수 조합으로 호출가능
3) 3주차 과제 스네이크 게임 & 블랙잭 게임
스네이크 게임
-뱀 클래스, 음식 생성기 클래스, 포인터 클래스 등을 만들어 구현
블랙잭 게임
- 플레이어와 딜러가 자신의 패의 합이 21점에 더 가까운 쪽이 이기는 블랙잭 게임을 구현
- Card, Deck, Hand(패), Player, Dealer, Blackjack 등의 클래스들을 사용
- 캡슐화를 사용해봄
ps. chatGPT는 잘만 이용하면 개발공부에 참 큰 도움이 된다는 생각