[C#] Sealed
반응형
다른 클래스가 해당클래스에서 상속하지 못하도록 하는 한정자인 Sealed는
함수, 속성, 클래스에 모두 사용 가능하다.
해당 한정자가 있는 경우 더이상 상속받지 못한다.
예를들어 게임에서 스킬트리를 만든다고 가정해보자
// 매우 간단한 스킬 클래스를 만든다고 해보자
public abstract class Skills
{
public double Damege; //데미지
public double Range; // 사정거리
public Elements Element; //속성
public virtual void Shooting();
}
//스킬클래스를 상속받는 속성 스킬들이 있다.
public class FireSkills : Skills
{
public double Damege ;
public double Range;
public sealed Elements Element = Elements.Fire
public virtual void Shooting();
}
public class IceSkills : Skills
{
public double Damege ;
public double Range;
public sealed Elements Element = Elements.Ice
public virtual void Shooting();
}
public class LeafSkills : Skills
{
public double Damege ;
public double Range;
public sealed Elements Element = Elements.Leaf
public virtual void Shooting();
}
// 1번의 상속을 거치면서 속성스킬을 만들엇고 속성값을 더이상 상속하고 재정의 할 수 없게 sealed 한정자를 붙였다.
// 여기서 한번의 상속을 더 거쳐보자.
public class FireShootingSkills : FireSkills
{
public double Damege ;
public double Range ;
public sealed void Shooting(){
//쏜다.
}
}
public class FireAreaSkills : FireSkills
{
public double Damege ;
public double Range ;
public sealed void Shooting(){
//나타난다.
}
}
// 이런식으로 불을 던지는 스킬은 던지는 것만 가능하도록
// 불이 나타나는 스킬은 나타나기만 하도록 생성 해 줄수 있다.
이런식으로 sealed는 더이상 재정의 할 수 없는 함수, 속성, 클래스를 정의한다..
반응형
'Study > C#' 카테고리의 다른 글
[C#] Visual Studio에서 Coding Covention 적용하는 방법 (0) | 2022.06.10 |
---|---|
[C#] Oracle Wallet 사용해 Oracle Cloud Connection (11) | 2022.04.21 |
[C#] C#에서 POST방식으로 특정 URL로 데이터 전송 (0) | 2022.04.07 |
[C#] C#에서 DataTable 을 JSON으로 변경 (0) | 2022.04.07 |
[C#] Oracle 연결해서 써먹기 (0) | 2021.04.23 |
댓글