메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 C# 프로그래밍

뇌를 자극하는 C# 프로그래밍 질의응답 게시판입니다.

[C# 5.0]7강 class의 p228쪽 <기반클래스와 파생클래스 사이의 형식변환 그리고 is 와 as> 부분 하다가 잘모르겠어서요

2015-08-17

|

by halohalox3

2191

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inheritance
{
    class Mammal
    {
        public void Nurse()
        {
            Console.WriteLine("Nurse()");
        }
    }
    class Dog : Mammal
    {
        public void Bark()
        {
            Console.WriteLine("Bark()");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Mammal mammal = new Mammal();
            mammal.Nurse();

            mammal = new dog(); ??
            mammal.Nurse();

            Dog dog= (Dog)mammal; ??

            dog.Nurse();
                dog.Bark();
        }
    }
}

결과물
Nurse()
Nurse()
Nurse()
Bark()

1. mammal = new dog() 란건 Mammal mammal = new Dog() 란 말인가요?
이 부분이 잘이해가 가지 않아요 Dog가 Mammal을 파생클래스이긴한데
mammal 이라는 객체를 Mammal 이라는 클래스 틀을 받아 생성하고 다시 Dog를 받아서 재생성했다?
근데 mammal.Bark(); 로 바로 밑에 메쏘드 실행하니까 이건 또 에러가 나더라고요
이 구문이 하는게 대체 뭐죠?  

2. Dog dog = (Dog) mammal ??? 이 대체 뭔가요?

지금까지 책잘보다가 여기서 턱 막히더니 이해가 하나도 안가요..ㅠ
댓글 입력