스토리지
[3.12] 상속 Inheritance 본문
상속은 객체지향 프로그래밍(Oriented Object Programming)의 4대 특성 중 하나이다.
-
1. 캡슐화 (멤버의 은닉, 변수를 외부에서 접근하지 못하게 함, api만 외부에 제공)
-
2. 상속 (중복코드를 최대한 줄이게 함)
-
3. 추상화 (객체의 필수 기능만 표시. stack 자료구조를 사용할때, 기능만 이용하지 안에 어떻게 구현되어있는지 궁금하지않음.) C#의 Console.WriteLine(object obj) 이 함수가 어떻게 구현되어있는지는 몰라도 잘 사용할 수 있다.
-
4. 다형성 (Overload<매개변수가 다르고 이름이 똑같은 함수>, Override<부모 클래스의 멤버함수를 자식에서 재정의>)
형식
using System;
namespace Study03
{
public class 자식클래스이름 : 부모클래스이름
{
}
}
C#은 단일상속만 지원한다. 이중이상의 상속( JAVA의 interface같은 것)을 지원하지 않음.
상속받은 클래스는 기본적으로 부모클래스의 자원을 이용할 수 있다. 다만 부모의 private는 자식 클래스에서도 이용할 수 없다.
-
public : 자식 클래스는 물론 외부에서도 사용가능
-
protected : 외부에서는 보이지 않으나 자식 클래스에서는 사용가능
-
private : 본인 클래스만 사용이 가능함.
EX ) 동물원이라는 프로젝트를 생성할 때 Animal -> Elephant, Lion, Tiger 등등의 파생클래스로 묶을 수 있다.
동물들에게는 공통적인 특징들(몸무게, 위치 등등...)을 부모클래스에 한번만 정의하고 자식클래스는 그것을 이용할 수 있다.
* 생성된 당시의 Instance를 계속 유지함. 타입을 부모타입으로 바꾼들 Instance는 바뀌지않음.
Unit unit = new SCV();
unit 타입으로 선언되어진 SCV Instance이다. Unit Instance가 아님.
public class App
{
public App()
{
new SCV();
}
}
public class Unit
{
public Unit()
{
Console.WriteLine("Unit 생성자 호출");
}
}
public class SCV : Unit
{
public SCV()
{
Console.WriteLine("SCV 생성자 호출");
}
}
SCV의 부모는 Unit
실행순서
new SCV() → SCV 클래스로 이동 → 상속확인 후 Unit 클래스로 이동 → Unit()생성자 실행 → 자식클래스 SCV() 생성자 실행
'Unity > 수업내용(C#)' 카테고리의 다른 글
[3.15] 배열 복습 (0) | 2021.03.15 |
---|---|
[3.12] 상속 예제 1 (0) | 2021.03.12 |
[3.12] Array 연습 (0) | 2021.03.12 |
[3.12] 메소드의 키워드 (ref, out, params) (0) | 2021.03.12 |
[3.12] Call by Value & Call by Reference (0) | 2021.03.12 |