virtual과 관련된 몇 가지 현상에 대해 좀 더 살펴보자. 자바의 경우 자바의 경우 인터페이스를 구현하거나 다른 클래스를 상속할 경우 항상 virtual로 간주되기 때문에 virtual이라는 키워드가 존재않는다. 따라서 원하지 않는 virtual 적인 행위를 방지하기 위해 final이라는 키워드를 사용할 수 있다. 클래스의 상속을 막기 위해 final class로 선언할 수 있고 public final class Babo { ... } 상속은 허용하되 일부 메소드의 override를 막기 위해 final 메소드로 선언할 수 있다. pubilc class Babo { public final void tellMe() { ... } } 참고로 final은 멤버 변수를 상수로 선언하기 위해 사용되기도 하고 ..
C#은 자바의 장점을 수용하고, 자바가 모델로 삼은 C++의 장점도 일부 수용하였기에 C#은 자바보다 표현 능력은 약간 낫다고 할 수 있다. C#에는 있지만 자바에는 없는 기능으로는 C++의 function pointer의 객체 버전이라 할 수 있는 delegate, 멤버 변수이외에 별도의 Property 둔 것, delegate 기반의 Event, indexer 등을 들 수 있다. C#의 Interface는 자바의 Interface와 달리 위에서 언급한 property, event, indexer 등을 선언할 수 있다. 또한 이글에서 말하고자하는 아주 작지만 재밌는 차이도 있다. 예전에 유익하게 읽었던 Effective Java 기억에 Effective C#을 읽다가 의심이 나서 테스트를 하게 되었다...
- Total
- 289,263
- Today
- 1
- Yesterday
- 0