Windows7을 깔고

Live Writer를 테스트 하는게 이게 잘 써질런지…

지도 사진
by 피요히코~ 2009. 10. 26. 03:01
원하지 않는 메소드의 상속..

ex)
어떤 값을 저장하고 보여주는
ArrayList라는 클래스를 상속받아서
MyArrayList라는 클래스를 만들었음


 
public class MyLIst : ArrayList
{
     public void add(object obj)
     {
          base.Add(ojb);
     }
     public object pop(int index)
     {
          return base[index];
     }
}

근데 이걸 또 어떤 사람이 가져다 사용

근데 이걸 사용하다 보니
값을 없앨일이 생겨서
. 찍고 인텔리센스를 보니
clear() 메소드가 있음

그래서 사용하지만.
이건 사용자가 원하는데로 동작을 하지 않아요.

MyList에 있는 메소드가 아니라. ArrayList에서 상속받아진 메소드이기 때문에!
by 피요히코~ 2009. 10. 15. 10:13

abstratct class와 interface의 차이점을 말하기 전에 abstract class 와 interface는 무었인가..?
abstract clss는 보통 abstract 매소드를 가진 class 이며 객체를 생성 할 수 없다.
abstract method 는 또 뭐란 말이냐??

abstract method는
모두 virtual 매소드 이며 하위 클래스에서 상속을 받는다면 반드시 구현해 주어야 하는 매소드 이다.

virtual 매소드는??
기반형의 매소드가 아닌 현재형의 매소드가 호출될 수 있도록 하는 키워드..

그렇다면 이 둘의 차이는 무었일까.
abstract class는 생성자를 가질수 있다. 그러나 interface는 그럴수 없다.
abstract class는 abstract가 아닌 매소드를 가질수 있다. 그러나 interface는 그럴수 없다.
abstract class는 맴버 변수를 가질 수 있다 .그러나 interface는 그럴수 없다.
abstract class는 매소드의 접근자 모두를 가질수 있다. public, private, internal.. ect
그러나 iterface 는 public만 가질수 있다.
abstract class는 클래스 이므로 하나만 상속이 가능하나. interface는 다중 상속이 가능하다.

그럼 언제 이 둘을 사용하여야 하는가??
당연히.. is a 관게일땐 abstract class ,
다른 연관이 없는 class에서 기능을 사용하고 싶을 경우는 interface는 사용하는 것이 좋겠다.

[출처] C# 에서 abstract class와 interface의 차이점?|작성자 갑환
by 피요히코~ 2009. 10. 15. 09:54