상속 vs 포함 (포함 예제)

///포함 관계라는 것은 클래스가 다른 클래스의 객체를 내부에 선언함으로써 포함된
///클래스의 기능을 공짜로 사용하는 것이다. 포함과 상속의 가장 큰 차이점은 다형성의
///발휘여부인데 상속은 클래스의 계층을 형성하여 다형성의 이점이 있지만 포함은
///코드를 한 번 재사용하는 정도의 기능 밖에 없다. 또한 상속은 protected 멤버를 자신의
///멤버처럼 자유롭게 액세스 하지만 포함은 그렇지 못하다.

 

using System;

 

class Human
{
    private string Name;
    private int Age;
    public Human(string aName, int aAge)
    {
        Name = aName;
        Age = aAge;
    }
    public void Intro()
    {
        Console.WriteLine("이름:" + Name);
        Console.WriteLine("나이:" + Age);
    }
}

class Student
{
    public Human H;             ///Human을 상속 받은것이 아니라 내부에 선언한것
                                ///즉, student 클래스 내부에 Human타입 객체 H를 포함
                                ///상속은 멤버를 바로 액세스 하지만, 포함한 경우는 객체의
                                ///이름을 통해야만 한다.
    protected int StNum;
    public Student(string aName, int aAge, int aStNum)
    {
        StNum = aStNum;
        H = new Human(aName, aAge);     ///Human의 Name과 Age변수를 호출
    }
    public void Intro()
    {
        H.Intro();                        ///Human의 메서드를 호출, 
        Console.WriteLine("학번:" + StNum);
    }
    public void Study()
    {
        Console.WriteLine("하늘 천 따지 검을 현 누를 황");
    }
}

class CSTest
{
    static void Main()
    {
        Student Kim;
        Kim = new Student("한석현", 29,0203446);
        Kim.Intro();
        Kim.Study();
    }
}


'and so on' 카테고리의 다른 글

[windbg] kb 명령어  (0) 2015.03.05
chapter01. 네트워크 프로그래밍과 소켓의 이해  (0) 2014.12.09
상속 vs 포함  (0) 2014.12.03
초성검색  (0) 2014.12.03
인덱싱  (0) 2014.12.03