C#/수업 내용

상속 클래스 (다운캐스팅 업캐스팅) + as연산자

Bueong_E 2023. 1. 5. 17:57
반응형
SMALL

기반 클래스

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{    
    class TerrranUnit
    {
        protected int hp; //파생 클래스 에서만 접근이 가능 or public

        //생성자
        public TerrranUnit()
        {
            
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    class Firebat : TerrranUnit
    {
        //생성자
        public Firebat()
        {
            this.hp = 10;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    class App
    {
        //생성자
        public App()
        {
           //업 캐스팅 (암시적 변환이 가능)
           TerrranUnit unit = (TerrranUnit)new Firebat();  // new 뒤의 생성자가 호출되는것이니 착각하지 말것
           //마치 정수 실수 변환 처럼 
           int a = (int)13.33f;

           //다운 캐스팅
           Firebat firebat = (Firebat)new TerrranUnit(); //테란유닛 클래스의 인스턴스가 생성되지 파이어벳클래스 인스턴스가 나오는건 아님
           Console.WriteLine(firebat);



        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study04
{
    class App
    {
        //생성자
        public App()
        {
            Console.WriteLine("App생성자");
            Firebat firebat = new Firebat();

            TerrranUnit unit = firebat;

            Firebat firebat1 = (Firebat)unit;

        }
    }
}
반응형
LIST