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는 사용하는 것이 좋겠다.
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Not providing an Area method results
// in a compile-time error.
public override int Area()
{
return x * y;
}
}
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
void ISampleInterface.SampleMethod()
{
// Method implementation.
}
static void Main()
{
// Declare an interface instance.
ISampleInterface obj = new ImplementationClass();
// Call the member.
obj.SampleMethod();
}
}
댓글
댓글 쓰기