Пример #1
0
        static void Main(string[] args)
        {
            Mammal one = new Mammal();

            one.Move();

            Lion lion = new Lion();

            lion.Move();

            Whale whale = new Whale();

            whale.Move();

            Human human = new Human();

            human.Move();

            /* 자식이 부모 타입으로 암시적으로 형변환된 경우 : 오버라이딩된 메소드는 자식의 메소드 실행 → 다형성 구현 */
            one = lion;
            one.Move();

            Mammal two = new Human();

            two.Move();
        }
Пример #2
0
        static void Main(string[] args)
        {
            Mammal one = new Mammal();

            one.Move();

            Lion lion = new Lion();

            lion.Move();

            Whale whale = new Whale();

            whale.Move();

            Human human = new Human();

            human.Move();

            /* 자식이 부모 타입으로 암시적으로 형변환된 경우 */
            /* virtual, override로 선언된 메서드는 다형성이 구현되어 자식의 메서드가 실행됨. */
            one = lion;
            one.Move();

            Mammal two = new Human();

            two.Move();
        }
Пример #3
0
        static void Main(string[] args)
        {
            //Mammal one = new Mammal();
            //one.Move();

            Lion   lion = new Lion();
            Mammal one  = lion;

            one.Move();

            Whale whale = new Whale();

            whale.Move();

            Human  human = new Human();
            Mammal two   = human;

            two.Move();
        }
Пример #4
0
        static void Main(string[] args)
        {
            Mammal one = new Mammal();

            one.Move();

            Lion lion = new Lion();

            lion.Move();

            Whale whale = new Whale();

            whale.Move();

            Human human = new Human();

            human.Move();

            Lion   lion2 = new Lion();
            Mammal one2  = lion2; // 부모 타입으로 형변환

            one2.Move();
        }
Пример #5
0
        static void Main(string[] args)
        {
            Animal a1 = new Lion();     // 다형성을
            Animal a2 = new Whale();    // 호출하는
            Animal a3 = new Human();    // 방법
            Animal a4 = new Bird();     // 이다.

            Console.Write("Lion : ");
            a1.Move();              // Lion은 오버라이딩을 안했으므로 Animal의 메소드가 출력된다.

            Console.Write("Whale : ");
            a2.Move();              // Whale은 오버라이딩을 했으므로 Whale의 메소드가 출력된다.

            Console.Write("Human : ");
            a3.Move();              // Human은 new로 부모 클래스와 이름만 같은 메소드를 만들어줬으므로 Animal의 메소드가 출력된다.

            Console.WriteLine("Bird : ");
            a4.Move();              // 부모 클래스의 메소드와 자식 클래스의 메소드가 같으 출려된다.

            //Animal.ToString();        // static 메소드가 아니므로 불가능
            Animal a = new Animal();

            Console.WriteLine(a.ToString());
        }