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();
//테란유닛
// ↑
//마린
//업캐스팅 (암시적)
TerranUnit unit = new Marine();
//marine 변수의 값은?
//Marine클래스의 인스턴스
//타입은?
//TerranUnit
unit.Attack();
//스팀팩 사용하고싶으면 marine 변수의 타입 -> Marine으로 변경
//다운 캐스팅 (명시적)
Marine marine = (Marine)unit;
marine.StimPack();
marine.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 void StimPack()
{
Console.WriteLine("스팀팩을 사용했습니다.");
}
}
}
TerranUnit 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnDotnet
{
public class TerranUnit
{
//멤버변수
//생성자메서드
public TerranUnit()
{
}
//멤버메서드
public void Attack()
{
Console.WriteLine("공격했습니다.");
}
}
}
업캐스팅 (암시적)
//marine 변수의 값은?
//Marine클래스의 인스턴스
//타입은?
//TerranUnit
다운캐스팅 (명시적)
'C#프로그래밍' 카테고리의 다른 글
속성 (0) | 2023.07.24 |
---|---|
구조체 ,추상 클래스, 봉인, 인터페이스, vector2 (0) | 2023.07.24 |
생성자 체이닝 (0) | 2023.07.24 |
virtual, override, overload, base (0) | 2023.07.24 |
상속 (0) | 2023.07.24 |