미리 만들어놓은 클래스의 변수 등을 상속받아서 사용할 수 있다.
클래스 상속
// 클래스 이름 다음 콜론(:) 상속 받을 클래스 이름으로 상속 받을 수 있다.
public class human : MonoBehaviour {
string humanName;
public int humanAge;
}
// 상속 받은 변수 사용
public class man : human {
humanAge = 5;
humanName = "제주 노마드";
}
클래스 상속을 받은 뒤 그 안에 있는 변수, 함수 등을 사용할 수 있는데 모든 것을 사용할 수 없고 지정자에 따라 쓸 수 있는 게 있고 없는 게 있다.
public은 사용할 수 있지만 아무것도 없는 것은 private가 생략되어 있는 것이므로 불러올 수 없다.
지정자에 대해서는 위 링크를 참고하기 바란다.
혹시 자기자신과 상속받은 자식 클래스에서만 사용하게 하고 싶다면 public 대신 protected를 쓰면 된다.
가상함수 virtual
클래스를 상속받으면 부모 클래스에 속해있는 함수를 사용할 수 있는데 함수를 다시 불러와서 쓰는 것뿐 아니라 자식 클래스에서 부모 클래스 함수를 재정의하게 할 수 있다.
그것이 가능한 함수를 가상함수라고 한다.
// 가상함수 만들기는 virtual을 써주면 된다.
protected virtual void a()
{
print("재정의 가능합니다.");
}
// 자식클래스에서 재정의하기
protected override void a() // override를 쓰면 재정의할 수 있다.
{
base a() // base는 부모 클래스를 말한다.
print("재정의 되었습니다.") // 이렇게 원하는 내용을 괄호 안에 써넣으면 함수가 재정의 된다.
}
추상함수 abstract
자식 클래스에서 기능을 완성시켜야 하는 함수로 예를 들어 아이디 생성 같은 걸 할 때 필수적으로 받아야 하는 데이터가 있다면 추상함수를 부모 클래스에 만든 뒤 자식 클래스가 상속받으면 해당 변수를 넣어주지 않으면 오류를 출력하므로 빠뜨리는 실수를 없앨 수 있다.
// 추상함수 만들기 위해서는 클래스와 함수 앞에 abstract를 써줘야 한다.
abstract public class parents : MonoBNehaviour
{
abstract protected void A();
}
// 추상함수를 만들었다면 자식클래스에서 완성시켜야 한다.
public class child : parents
{
protected override void A() // 오버라이드로 재정의해주면 된다.
{
}
}
손자 클래스
정식명칭은 아니고 그냥 내가 정해봤다.
부모 클래스를 자녀 클래스가 상속을 받았다고 치자.
그리고 그 자녀 클래스를 또다시 다른 클래스가 상속받을 수 있다.
이렇게 되면 제일 아래 클래스는 부모 클래스와 자녀 클래스를 모두 상속받아 사용할 수 있게 된다.
※ 함께 읽으면 좋은 C# 기초
C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist 클릭!
'IT > 코딩' 카테고리의 다른 글
C# 인터페이스, 형식 매개 변수 T (0) | 2021.12.17 |
---|---|
C# 프로퍼티 속성, 인덱서 (0) | 2021.12.16 |
C# 구조체 델리게이트 (0) | 2021.12.14 |
C# 네임스페이스 Namespace (0) | 2021.12.13 |
C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist (0) | 2021.12.12 |