Exemplo n.º 1
0
    static void Main(string[] args)
    {
        Son Imson = new Son();

        Console.WriteLine(Imson.Field);
        Imson.Print();
        Imson.Override_Print();



        /////////////////////////////////////////////////
        /////////////////////////////////////
        // 만약 하위 클래스 객체를 선언한다고 해도,
        // 참조 변수의 참조형이 상위 클래스라면
        // 같은 이름이어도 상위 클래스의 메서드를 호출한다.
        Mom Immom = new Son();

        Console.WriteLine(Immom.Field);
        Immom.Print();

        ////////////////////////////////
        // 그러나, 만약 메서드가 override되어있다면
        // override된 메서드를 호출한다!
        Immom.Override_Print();


        // 이게 그냥 재정의하는 것과, override하는 것의 큰 차이점!


        Son test2 = new Son();
        Mom test3 = (Mom)test2; // 이런 식으로 업캐스트하여 참조형에 인스턴스를 넣어줄 수도 있다.

        test3.Print();          // --> Mom 호출.



        Console.ReadKey();
    }