1. Overloading_오버로딩
>>같은 이름의 Damage 함수인데 세종류가 있는 것을 볼 수 있다.
2. Overriding_오버라이딩
class FightUnit
{
protected string Name = "None";
protected int AT = 10;
protected int HP = 100;
//자식이 나의 GetAT를 구현했다면 자식 형태의 GetAT를 호출해라. -> 오버라이딩 / 다형성의 핵심 문법
public virtual int GetAT()
{
return AT;
}
//프로퍼티도 virtual가능
protected virtual int DMGAT
{
get
{
return AT;
}
}
public void Damage(FightUnit _OtherFightUnit)
{
int AT = _OtherFightUnit.DMGAT;//각자만의 것이어야함.
//함수 하나로 쓰고자 하는 목적에는 쓸 수 없음.
//AT는 FightUnit의 것이기 때문.
Console.WriteLine(_OtherFightUnit.Name + "에게" + GetAT() + "만큼의 데미지를 입었습니다.");
HP -= AT;
}
}
class Player : FightUnit
{
int ItemAT = 5;
//FightUnit의 GetAT보다 Player의 GetAT가 호출된다.
//나는 부모님의 GetAT를 재구현했다.
protected override int DMGAT
{
get
{
return AT + ItemAT;
//Player의 GetAT는 ItemAT까지 더해진다.
}
}
public Player(string _Name)
{
Name = _Name;
}
}
class Monster : FightUnit
{
int MonsterLv = 2;
public override int GetAT()
{
return AT + MonsterLv;
}
public Monster(string _Name)
{
Name = _Name;
}
}
namespace _30Overriding
{
internal class Program
{
static void Main(string[] args)
{
Player NewPlayer = new Player("플레이어"); //이름을 넣어주기로 했으니 넣어줘야함.
Monster NewMonster = new Monster("몬스터");
//NewPlayer.GetAT();
NewPlayer.Damage(NewMonster);
//상속받아서 Damage함수 사용 가능
NewMonster.Damage(NewPlayer);
//각자가 공격력을 산출하는 방식이 다른것이 문제.
}
}
}
3. Interface_인터페이스
//사용자 정의 자료형.
interface QuestUnit
{
//int A =0; 멤버변수 x
//함수의 형태만 물려줄 수 있는 문법
void Talk(QuestUnit _OtherUnit);
//함수의 정의만 내려놓는다.
//private도 쓸 수 없음.
void Event(QuestUnit _OtherUnit);
}
class FightUnit
{
int AT;
int DMG;
public void Damage()
{
}
}
//인터페이스는 함수 구현을 강제할 수 있다.
//Talk와 Event를 구현해야 함.
class Player : FightUnit, QuestUnit
{
public void Talk(QuestUnit _OtherUnit)
{
}
public void Event(QuestUnit _OtherUnit)
{
}
}
class NPC : FightUnit, QuestUnit
{
public void Talk(QuestUnit _OtherUnit)
{
}
public void Event(QuestUnit _OtherUnit)
{
}
}
namespace _31Interfaace
{
internal class Program
{
static void Main(string[] args)
{
Player NewPlayer = new Player();
NPC NewNPC = new NPC();
QuestUnit NewQuestUnit = NewNPC;
//업캐스팅이 된다.
NewPlayer.Talk(NewNPC);
NewNPC.Talk(NewPlayer);
}
}
}
4. Array_배열
class Item
{
public string Name;
public int AT;
public int DF;
}
static void Main(string[] args)
{
//배열은 기본자료형에 속한다.
//ArrInt는 int의 배열형(int의 집합), int가 10개 생겼다.
int[] ArrInt = new int[10];
//여러개가 모여있고 연속되어 있다.
Console.WriteLine(ArrInt[0]);
//for문과 많이 사용된다.
for (int i = 0; i < ArrInt.Length; i++)
{
Console.WriteLine(ArrInt[i]);
}
//클래스도 배열이 가능. 사용자 정의 자료형
Item[] ArrItem = new Item[10];
//아이템이라는 참조형을 담을 수 있는 공간이 10개 생겼다.
//아이템이라는 메모리를 가리킬 수 있는 참조형이 10개 생겼다.
//아이템 자체가 100개가 생긴것은 아님! Item NewItem = new Item();//->아이템이 생긴것.
for (int i = 0; i < ArrItem.Length; i++)
{
ArrItem[i] = new Item();//->아이템이 10개 생긴것.
}
ArrItem[0].Name = "철검";
ArrItem[1].Name = "전설의 검";
ArrItem[2].Name = "갑옷";
ArrItem[3].Name = "멋진 갑옷";
ArrItem[4].Name = "포션";
for (int i = 0; i < ArrItem.Length; i++)
{
Console.WriteLine(ArrItem[i].Name);
}
}
'개발자_뉴비일지' 카테고리의 다른 글
내일배움캠프 Unity 32일차 TIL - 첫 필수구현 (1) | 2024.02.06 |
---|---|
내일배움캠프 Unity 31일차 TIL - 버튼 (2) | 2024.02.05 |
내일배움캠프 Unity 30일차 TIL - UI의 재미 (0) | 2024.02.02 |
내일배움캠프 Unity 29일차 TIL - 3D (0) | 2024.02.01 |
내일배움캠프 Unity 28일차 TIL - 즐거운 Ending (0) | 2024.01.31 |