0317 Abstract
2021. 3. 17. 15:18ㆍC#/수업내용
클래스가 자체에서 인스턴스화 되지 않고 다른 클래스의 기본 클래스로만 사용된다.
추상 클래스에서 파생된 비 추상 클래스에 의해 구현 되어야 한다.
추상 메서드 선언은 추상 클래스에서만 허용된다.
추상 메서드는 본문이 없다. (정의만 내린다.)
static /virtual를 쓰면 안됨.
public abstract class ZergUnit:IBurrow
{
public abstract void Attack();
public abstract void Burrow();
public abstract void Unburrow();
}
interface IBurrow
{
void Burrow();
void Unburrow();
}
public class Zergling : ZergUnit
{
private bool isBurrowed;
public override void Attack()
{
if (isBurrowed)
{
Console.WriteLine("저글링은 버로우 상태에서 공격할 수 없습니다.");
}
else
{
Console.WriteLine("저글링이 발톱으로 공격합니다.");
}
}
public override void Burrow()
{
this.isBurrowed = true;
Console.WriteLine("저글링이 땅 속으로 숨습니다.");
}
public override void Unburrow()
{
this.isBurrowed = false;
Console.WriteLine("저글링이 땅 위로 올라옵니다.");
}
}
public class Lurker:ZergUnit
{
private bool isBurrowed;
public override void Attack()
{
if (this.isBurrowed)
{
Console.WriteLine("럴커가 가시로 공격합니다.");
}
else {
Console.WriteLine("럴커는 버로우 상태일때만 공격할 수 있습니다.");
}
}
public override void Burrow()
{
Console.WriteLine("럴커가 땅 속으로 숨습니다.");
}
public override void Unburrow()
{
throw new NotImplementedException();
}
}
public abstract class TerranUnit
{
public abstract void Attack();
public abstract void Cloak();
public abstract void Uncloak();
}
public class Wraith:TerranUnit
{
public override void Attack()
{
Console.WriteLine("레이스가 레이저로 공격합니다.");
}
public override void Cloak()
{
Console.WriteLine("레이스가 클로킹을 합니다.");
}
public override void Uncloak()
{
Console.WriteLine("레이스가 클로킹을 풀었습니다.");
}
}
public class Ghost:TerranUnit
{
public override void Attack()
{
Console.WriteLine("고스트가 총으로 공격합니다.");
}
public override void Cloak()
{
Console.WriteLine("고스트가 클로킹을 합니다.");
Console.WriteLine("고스트가 핵 감지를 시작합니다.");
}
public override void Uncloak()
{
Console.WriteLine("고스트가 클로킹을 풀었습니다.");
}
}
'C# > 수업내용' 카테고리의 다른 글
0318 is, as 연산자, IEquatable<T> 인터페이스 (0) | 2021.03.18 |
---|---|
0317 Property 속성/Stack 클래스/Queue 큐 (0) | 2021.03.17 |
0317 인터페이스/Virtual (0) | 2021.03.17 |
0317 배열 복습★★★★ (0) | 2021.03.17 |
0316 Collection> Dictionary (0) | 2021.03.16 |