클래스는 부모 클래스를 두 개 이상 상속받을 수 없다.
오직 하나의 부모 클래스로부터 상속이 가능하다.
그래서 나온 게 인터페이스다.
인터페이스 interface
// 인터페이스 생성, 클래스처럼 뼈대를 제공하지만 다중 상속이 가능하게 함.
interface Jeju
{
void A();
}
public class A : MonoBehaviour
{
}
// 다중 상속
public class Test : A, Jeju {
}
인터페이스는 클래스처럼 뼈대를 제공한다.
하지만 클래스와 달리 다중 상속을 받게 해줄 수 있다.
대신 인터페이스에선 선언만 해야 되고 변수를 넣을 수는 없다.
인터페이스끼리 서로 상속도 가능하다.
이건 클래스랑 같다.
형식 매개 변수 T
같은 함수인데 매개변수(파라미터)만 다른 함수를 여러 개 생성해놓을 수 있다.
그렇게 만들어 놓은 뒤 함수를 호출할 때 파라미터를 넣으면 자료형에 따라 함수가 호출된다.
그런데 이렇게 자료형별로 만들면 굉장히 비효율적이다.
이럴 때 형식 매개 변수를 이용한다.
// 형식 매개 변수가 없다면 자료형별로 함수를 만들어줘야 한다.
void Print(int value)
{
print(value);
}
void Print(string value)
{
print(value);
}
void Print(float value)
{
print(value);
}
// 형식 매개변수를 이용한다면 소괄호에 T를 넣어준다. 아무거나 넣어줘도 되는데 관례상 Type의 약자 T를 넣는다.
void Print<T>(T value)
{
print(value);
}
// 형식 매개변수 사용법은 소괄호 안에 타입을 넣어주면 된다.
Print<string>("abc");
이런식으로 형식을 나중에 입력하게 만들어줄 수 있다.
또한 형식매개변수를 만든 뒤 특정 타입만 넣도록 해줄 수도 있다.
// 특정 자료형만 넣도록 where T 뒤에 타입을 작성해준다.
void Print<T>(T value) where T : class
{
Print(value);
}
이렇게 클래스, int 등 타입만 넣도록 만들어줄 수 있다.
함수 뿐 아니라 클래스에도 형식 매개변수를 쓸 수 있다.
// 클래스에 형식 매개변수 T 적용
public class Abc<T>
{
public T var;
public T[] array;
}
// 사용하기
Abc<String> a;
void Start()
{
a.var = "가나다";
a.array[0] = "가";
}
이런 식이다.
※ 함께 읽으면 좋은 C# 기초
C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist 클릭!
'IT > 코딩' 카테고리의 다른 글
C# 코루틴, 전처리 (0) | 2021.12.19 |
---|---|
C# 무명 메소드, 람다식, Action, Func, 예외 처리 (0) | 2021.12.18 |
C# 프로퍼티 속성, 인덱서 (0) | 2021.12.16 |
C# 클래스 상속 (0) | 2021.12.15 |
C# 구조체 델리게이트 (0) | 2021.12.14 |