C#과 Java언어 비교(7) - Polymorphism
C# and JAVA 2007. 5. 29. 11:05http://genamics.com/developer/csharp_comparative_part8.htm
11. 다형성(Ploymorphism)
가상 메소드(virtual method)는 객체지향 언어가 다형성을 표현할 수 있도록 해준다. 이것은 파생 클래스가 기반 클래스에 있는 메소드와 동일한 시그너처를 가진 메소드를 작성할 수 있으며, 기반 클래스에서 파생 클래스의 메소드를 호출할 수 있다는 것을 의미한다. 기본적으로 Java에서는 모든 메소드가 가상이다. C#에서는 C++에서와 같이 virtual 키워드를 사용하여야만 메소드를 기반 클래스에서 호출될 것이다.
C#에는 그뿐만 아니라 기반 클래스의 메소드를 재정의해야할(혹은 추상 메소드를 구현해야 하는) 메소드에는 override 키워드를 지정할 필요가 있다
public virtual void foo () {}
}
Class D : B {
public override void foo () {}
}
public new void foo () {}
}
N n = new N ();
n.foo(); // calls N's foo
((D)n).foo(); // calls D's foo
((B)n).foo(); // calls D's foo