스탠다드 특강에서 배운 내용으로 TIL 을 적어보려 합니다.
Virtual 과 Abstract(추상) class 에 대하여 좀 더 확실히 알게 된 것 같아 먼저 정리해봅니다.
클래스 상속에서 쓰이는 Virtual 과 Abstract 는 상속하는 클래스에서 선언을 하고 상속받는 클래스에서
override(재정의)를 합니다.
Virtual
Virtual로 선언한 함수의 같은 이름의 override 함수가 있을 경우
같은 이름의 함수를 사용하더라도 파생 클래스의 함수가 사용됩니다. (없을 경우 Virtual의 함수가 실행)
public class Job
{
public virtual void Attack()
{
Debug.Log("막대기로 공격");
}
}
public class Worrior : Job
{
public override void Attack()
{
Debug.Log("검으로 공격");
}
}
Worrior swordMan = new Worrior();
swordMan.Attack(); //콘솔창에 검으로 공격 출력
Abstract
Abstract 키워드를 사용하면 상속하는 클래스에서 정의한 동일한 함수를 받는쪽에서 정의 해야합니다.
모체가 되는 클래스에는 내용을 입력할 수 없습니다.
파생 클래스에서 만들 것을 미리 만들어두는 것이라고 생각하면 될 것 같습니다.
public abstract class Job
{
public abstract void Attack();
}
public class Worriar :Job
{
public override void Attack()
{
Debug.Log("공격");
}
}
Worrior swordMan = new Worrior();
swordMan.Attack(); //콘솔창에 공격 출력
Interface
인터페이스는 abstract와 비슷한 기능을 가지만 멤버변수를 사용할 수 없습니다. (프로퍼티는 가능)
interface Job
{
void Attack();
string propertyName {get; set;}
}
public class Warrior : Job
{
private string name;
public void Attack()
{
Debug.Log(name + "의 공격");
}
public string name
{
get
{
return propertyName;
}
set
{
propertyName = value;
}
}
}
Worrior swordMan = new Worrior();
swordMan.name = "전사";
swordMan.Attack(); //출력 : 전사의 공격
쓰이는 곳은 다르고 스타일의 영역이라고 말씀하셨지만 역시 직접 시도해보면서 익혀봐야할 것 같습니다.
'TIL' 카테고리의 다른 글
2024 10 16 TIL (1) | 2024.10.16 |
---|---|
2024 10 15 TIL (2) | 2024.10.15 |
2024 10 11 TIL (5) | 2024.10.11 |
2024 10 10 TIL (0) | 2024.10.10 |
2024 10 08 TIL (6) | 2024.10.08 |