반응형

C# Inheritance(상속)

대상:

클래스

 

목적:

클래스의 재사용-> 코드량 줄이기

 

상속 클래스의 역할

부모클래스 : 상속을 하는 클래스

(parent class, base class, 상위 클래스)

 

자식 클래스 : 상속을 받는 클래스

(child class, derived class, 파생 클래스)

 

 

 

 

 

 

상속 관계 표시 형식

class Parent

{

}

 

class Child : Parent

{

}

Parent class

  

Child class

 

상속 관계 표시는 화살표로 하며, 화살 정방향이 부모를 가리키고, 역방향은 자식을 향한다

 

 

 

 

 

 

 

상위 클래스 접근 지정자

class Parent

{

private //Child 에서 접근 불가

protected //Child 접근 가능

public //Child Main 같은 외부에서도 접근 가능

}

 

class Child : Parent

{

}

 

 

 

ex1)

 

using System;

 

namespace Inheritance

{

    class A

    {

        private void PrintPrivate()

        {

            Console.WriteLine("private");

        }

 

        protected void PrintProtected()

        {

            Console.WriteLine("protected");

        }

 

        public void PrintPublic()

        {

            Console.WriteLine("public");

        }

    }

 

    class B : A

    {

        public void Print()

        {

            //PrintPrivate(); //접근 불가능

            PrintProtected();

            PrintPublic();

        }

    }

 

 

    class Program

    {

        static void Main(string[] args)

        {

            B Test = new B();

            Test.Print();

            Test.PrintPublic();

        }

    }

}

 

 

 

 

상속 관계에서 생성자, 소멸자 호출 순서

  • 생성자 호출 : 상위 -> 하위

 

  • 소멸자 호출 : 하위 -> 상위

 

 

 

ex2)

 

using System;

 

namespace Inheritance

{

    class A

    {

        public A()

        {

            Console.WriteLine("A 생성자");

        }

        ~A()

        {

            Console.WriteLine("A 소멸자");

 

        }

 

        private void PrintPrivate()

        {

            Console.WriteLine("private");

        }

    }

 

    class B : A

    {

        public B()

        {

            Console.WriteLine("B 생성자");

        }

 

        ~B()

        {

            Console.WriteLine("B 소멸자");

 

        }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            B test = new B();

        }

    }

}

 

코드 실행 결과

생성자는 Base생성자 -> Derived 생성자 순, 소멸자는 Derieved 소멸자 -> Base 소멸자 순이다 

 

 

생성자 호출 순서

 

 

소멸자 호출 순서

 

반응형

+ Recent posts