스토리지

[3.12] 상속 Inheritance 본문

Unity/수업내용(C#)

[3.12] 상속 Inheritance

ljw4104 2021. 3. 12. 16:30

상속은 객체지향 프로그래밍(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
Comments