프로그래밍 C#언어

상속 (Inheritance)

게임첫걸음 2024. 8. 30. 17:19

 상속(Inheritance)은 'Parent - Child(부모클래스 - 자식클래스)', 'Base - Derived(기본클래스 - 파생클래스)', 'Super class - Sub class' 로 부릅니다. 

상속 관계 구조 예시

 상속은 Parent class의 데이터를 Child class에서 불러올 수 있습니다. 그러나 Child class의 데이터를 Parent class에서 불러올 수 없습니다. 가져오면 짱구 아빠 얼굴처럼 프로그램이 경고와 오류가 있다합니다. 

/*sealed*/ class Parent //sealed문은 봉인과 같음. 자식이든 뭐든 아무도 못 쓰도록 포장하는 문
{
    public int parentA;  //protected는 자식은 접근 되지만 외부는 접근할 수 없는 상속문. Program.cs에서 못다룸.
    public int parentB; 

    public void ParentFunc()
    {
        Console.WriteLine("Parent Function Call!");
        
    }
    
    public Parent()
    {
        Console.WriteLine("Parent Constructor Call!");
    }

    ~Parent()
    {
        Console.WriteLine("Parent Destructor Call!");
    }
}

class Child : Parent
{
    public int childC;

    public Child()
    {
        Console.WriteLine("Child Constructor Call!");
    }

    ~Child()
    {
        Console.WriteLine("Child Destructor Call!");
    }

    public void ChildFunc()
    {
        base.parentA = 10;
        parentB = 20;
        base.ParentFunc();
    }
}
  • sealed문: 해당 클래스를 봉인한다는 뜻과 같습니다. 아무도 접근 불가입니다.
  • 변수 앞에 기입하는 접근 지정자에 따라 접근 권한을 설정할 수 있습니다.
  • public: 모든 접근 허용, private: 모든 외부 접근 금지, protected : 자식은 접근 가능, 그러나 다른 문서에서 접근 불가.
  • Child : Parent로 관계 설정.

<외부 접근>

 

class Program
{
    static void InheritanceExample()
    {
        //Parent parent = new Parent();
        Child child = new Child();
        //child.parentA = 10;
        child.ParentFunc();
    }

    static void Main()
    {
        //상속(Inheritance)
        InheritanceExample();

        GC.Collect();
        Console.Read();
    }
}
  • InheritanceExample()은 새로운 Child class를 사용하는 child 변수를 생성합니다.
  • child 변수는 ParentFunc()를 사용합니다.
  • base.parentA = 10;
      parentB = 20;
      base.ParentFunc();

'프로그래밍 C#언어' 카테고리의 다른 글

상속3  (0) 2024.09.09
상속2  (5) 2024.09.05
String (문자열)  (0) 2024.08.30
구조체 (Structure)  (1) 2024.08.29
배열 (Array)  (0) 2024.08.29