글
원하지 않는 메소드의 상속..
ex)
어떤 값을 저장하고 보여주는
ArrayList라는 클래스를 상속받아서
MyArrayList라는 클래스를 만들었음
근데 이걸 또 어떤 사람이 가져다 사용
근데 이걸 사용하다 보니
값을 없앨일이 생겨서
. 찍고 인텔리센스를 보니
clear() 메소드가 있음
그래서 사용하지만.
이건 사용자가 원하는데로 동작을 하지 않아요.
MyList에 있는 메소드가 아니라. ArrayList에서 상속받아진 메소드이기 때문에!
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에서 상속받아진 메소드이기 때문에!
글
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의 차이점?|작성자 갑환
RECENT COMMENT