면접 무조건 물어봄
virtual, override, overload, base가 뭔지..
Marine 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Marine : TerranUnit
{
//멤버변수
//생성자메서드
public Marine()
{
Console.WriteLine("Marine클래스 생성자 호출됨");
Console.WriteLine(this.hp);
}
//멤버메서드
//파생클래스에서 override
public override void Attack()
{
//base.Attack();
Console.WriteLine("총으로 공격합니다.");
}
// 메서드 overload : 같은 이름의 메서드를 여러번 정의 할 수 있음
public void Attack(TerranUnit target)
{
}
}
}
Firebat 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class Firebat : TerranUnit
{
//멤버변수
//생성자메서드
public Firebat()
{
}
//멤버메서드
public override void Attack() // override : 부모 클래스의 메서드를 재정의(부모 : virtual)
{
base.Attack(); //파생클래스에서 부모클래스의 멤버를 엑세스하는 키워드
Console.WriteLine("화염방사기로 공격했습니다.");
}
}
}
TerranUnit 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class TerranUnit
{
//멤버변수
//protected : 파생 클래스까지 접급할 수 있음
protected int hp = 10; //모든 테란 유닛은 새염엵을 가지고있다.
//생성자메서드
public TerranUnit()
{
Console.WriteLine("TerranUnit클래스의 생성자 호출됨");
Console.WriteLine(this); //클래스의 현재 인스턴스
Console.WriteLine(this.hp);
}
//멤버메서드
public int GetHp()
{
return this.hp;
}
//모든 테란 유닛은 공격할 수 있다.
//부모 : virtual (파생클래스에서 재정의 할 수 있다)
public virtual void Attack()
{
Console.WriteLine("공격했습니다.");
}
}
}
App 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
internal class App
{
//생성자 메서드
public App()
{
Marine marine = new Marine(); //호출은 부모가 먼저되고
marine.Attack();
Firebat firebat = new Firebat();
firebat.Attack();
}
}
}
Marine 오버로드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
public class Marine : TerranUnit
{
//멤버변수
//생성자메서드
public Marine()
{
}
//멤버메서드
//같은 이름의 생성자 메서드 정의 매개변수만 다르다면
//메서드 오버로드
public Marine(int hp)
{
}
}
}
'C#프로그래밍' 카테고리의 다른 글
업캐스팅과 다운캐스팅 (0) | 2023.07.24 |
---|---|
생성자 체이닝 (0) | 2023.07.24 |
상속 (0) | 2023.07.24 |
저글링, 마린, 메딕 (0) | 2023.07.24 |
저글링 vs 마린 (0) | 2023.07.21 |