abstract class와 interface의 차이점rename

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();
    }
}

댓글

이 블로그의 인기 게시물

유니티 오브젝트 서서히 사라지게

WebView에서 YOUTUBE 동영상 플레이 방법