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(); }
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(); }
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(); }
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(); }
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()); }