C#프로그래밍

구조체 ,추상 클래스, 봉인, 인터페이스, vector2

다모아 2023. 7. 24. 15:10

App 클래스

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

namespace LearnDotnet
{
    internal class App
    {
        //생성자 메서드
        public App()
        {
            //업캐스팅
            IAttackable marine = new Marine();
            marine.Attack();

            //다운캐스팅
            Marine m = (Marine)marine;
            m.StimPack();

        }
    }
}

 

Marine 클래스

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

namespace LearnDotnet
{
    public class Marine : TerranUnit, IAttackable
    {
        //멤버변수

        //생성자메서드
        public Marine()
        {

        }
        //멤버메서드
        public void Attack()
        {
            Console.WriteLine("총으로 공격합니다.");
        }
        
        public void StimPack()
        {

        }
    }
}

 

Firebat 클래스

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

namespace LearnDotnet
{
    internal class Firebat : TerranUnit, IAttackable
    {
        //멤버변수
        //생성자메서드
        public Firebat()
        {

        }
        //멤버메서드
        public void Attack()
        {
            Console.WriteLine("화염방사기로 공격합니다.");
        }
    }
}

 

Vector2 클래스

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

namespace LearnDotnet
{
    //구조체 : 값형식
    //클래스랑 똑같지만 
    //구조체 형식은 다른 클래스 또는 구조체 형식에서 상속할 수 없으며, 클래스의 기본이 될 수 없습니다.
    // 매개 변수가 없는 생성자를 선언할 수 없습니다.
    //구조체 형식의 생성자가 형식의 모든 instance 필드를 초기화해야 합니다.
    //적은 양의 데이터
    //일회용 사용
    public struct Vector2
    {
        public int x;
        public int y;
        //생성자
        public Vector2(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
}

 

IAttackable 인터페이스

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

namespace LearnDotnet
{
    public interface IAttackable
    {
        //기능 정의
        void Attack();
    }
}

 

추상 클래스는 인스턴스화 할 수 없습니다. [new 사용불가]

봉인 클래스 = sealed 기본 클래스 사용 불가

'C#프로그래밍' 카테고리의 다른 글

배열 (정수형, 문자형, foreach)  (0) 2023.07.24
속성  (0) 2023.07.24
업캐스팅과 다운캐스팅  (0) 2023.07.24
생성자 체이닝  (0) 2023.07.24
virtual, override, overload, base  (0) 2023.07.24