출처 : https://www.youtube.com/watch?v=exqTQxQqkUk&list=PL4SIC1d_ab-Y-bBKojxhtFWwNpawMM1h5&index=20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 방법은
// 공통되는 기능을 하는 멤버 변수와
// 멤버 함수를 걷어낸다.
// 새로운 클래스에 그 모든 멤버 변수와 함수를 넣는다.
// 상속시킨다.
class FightUnit
{
// 범위
// public -> 외부까지
// protected -> 자식까지
// private -> 나까지 (디폴트)
protected int AT = 10;
protected int HP = 100;
public void Damage(FightUnit _OtherUnit)
{
// 나는 fightUnit지만
// 이안에서 플레이어의 기능을 쓰고 싶은것.
// 다운캐스팅
// 다운캐스팅은 최대한 지양(피하라.)
// 플레이러를 실수로 몬스터로 변경할수도 있게 된다.
// Player OhterPlayer = _OtherUnit;
this.HP -= _OtherUnit.AT;
}
}
// 내려준다 상속시킨다라고 말합니다.
// C#에서 클래스 상속이란 오직 하나만 가능하나.
// 클래스 상속을 여러개 받는 언어들도 존재하지만(대표적 C++)
// C#은 아니다.
class Player : FightUnit
{
int Lv = 1;
void Heal()
{
HP = 100;
}
}
class Monster : FightUnit
{
int Exp = 10;
}
namespace _23Inheritance
{
// 상속이란
// 코드 재활용성을 향상시키기 위해서
// (똑같은 코드 2번 치기 싫다. 함수도 마찬가지)
// 어떤 계열이 있느냐를 파악하는 감.
class Program
{
static void Main(string[] args)
{
// 변환이란 작업을 거치지 않으면
// 이런일을 발생할 수 없다.
// int Value = 500;
// string StrValue = Value;
// 메모리 구조를 따란간다.
Player NewPlayer = new Player();
Monster NewMonster = new Monster();
// NewPlayer.Damage(10);
// 플레이어 부분을 모두 다 포기하겠다.
// 업캐스팅
// 자식이 부모형이 되는것.
// 그러므로서 자식의 능력은 버린다.
// 다운캐스팅
FightUnit FU = NewPlayer;
NewPlayer.Damage(FU);
// 다를게 없다. 차이가 없다.
NewPlayer.Damage(NewMonster);
NewMonster.Damage(NewPlayer);
}
}
}
FightUnit FU = NewPlayer;
'C# 개인 공부 기록용 > 어소트락 게임아카데미 - C# 무료강의[2019] 총48강' 카테고리의 다른 글
[C# 강의 23화]string 기본자료형 기초 (0) | 2022.10.25 |
---|---|
[C# 강의 21화]생성자 (0) | 2022.10.14 |
[C# 강의 17화] struct & enum (0) | 2022.10.13 |
[C# 강의 15화] !중요! this 레퍼런스 (0) | 2022.07.05 |
[C# 강의 13화, 14화] !중요! 맴버함수의 기본개념 , static 함수 & static class (0) | 2022.07.04 |