Unity3D/C#

C# 강좌 Day-14 (abstract, interface)

일등하이 2021. 8. 15. 22:19
반응형

https://youtu.be/edyBXI9lL9U?list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z 

 

https://youtu.be/UrOYtghn21Y?list=PLTFRwWXfOIYBmr3fK17E0VhKPyYrGy75z 

 

abstract 키워드 

추상 클래스 선언및 메서드에서 사용된다

추상 클래스는 인스턴화 되지 않고 추상클래스를 상속 받은 자식 클래스는 부모클래스에서 선언된 메서드를 반드시 구현 해야 한다 

 

추상 클래스 선언 

using System;

public abstract class Unit
{
    public string name;

    public Unit(string name)
    {
        this.name = name;
        Console.WriteLine("Unit 클래스의 생성자");
    }

    public abstract void Move();
}
using System;

public class Marine : Unit
{
    public Marine(string name): base(name)
    {
        Console.WriteLine("{0}이(가) 생성되었습니다.", this.name);
    }

    public override void Move()
    {
        Console.WriteLine("{0}이(가) 이동합니다.", this.name);
    }
}
using System;

class Program
{
    static void Main(string[] args)
    {
        Marine marine = new Marine("마린1");
        marine.Move();
    }
}

 

abstract 메서드에 virtual 키워드를 사용할수 없다 

 

 

 

interface

인터페이스 선언시 I를 붙여주는것이 관례

구현 되어 있지 않은 메서드들의 정의만을 포함한다 

인스턴스화 될수 없다

이는 클래스에서 상속 받아 구현할수 있다

추상 클래스와 차이점은 다중 상속이 가능하다는점이다

인터페이스에 선언된 메서드에 제한자가 없다 하더라도 public 추상 메서드라고 생각하면 된다 

 

인터페이스 정의및 상속 

interface IZerg
{
    void Transformation();
    void Burrow();
}
using System;

public class Hydralisk : IZerg
{
    public Hydralisk()
    {

    }

    public void Burrow()
    {
        
    }

    public void Transformation()
    {
        
    }
}

 

인터페이스를 다중상속하기 

다중 상속시 , 를 찍어 인터페이스를 적어준다 

interface IZerg
{
    void Transformation();
    void Burrow();
}

interface IRecoveryHp
{
    void RecoverHp();
}
using System;

public class Hydralisk : IZerg, IRecoveryHp
{
    public Hydralisk()
    {

    }

    public void Burrow()
    {
        //땅속에 숨기
    }

    public void Transformation()
    {
        //변환 
    }

    public void RecoverHp()
    {
        //체력 회복 
    }
}
반응형