인터페이스와 추상 클래스의 구분
인터페이스와 추상 클래스를 어떻게 구분할 수 있습니까?
초보자가 인터페이스와 추상 클래스가 무엇인지 이해하고 다음에 궁금해하는 것은
각각 어떻게 어떻게 구분하면 좋을까?
라는 것이 아닐까 생각합니다.
인터페이스는 사용자를 위해, 추상 클래스는 구현자를 위해
단적으로 말하면 이것뿐입니다.
구체적으로
폴리모피즘을 사용해 호출하고 싶은 클래스는, 인터페이스를 구현합시다.
사용하는 측은, 추상 클래스형의 변수는 선언해서는 안됩니다.
인터페이스 유형으로 변수를 선언합시다.
AbstractFooBar = new FooBar(); // NG
IFooBar = new FooBar(); // OK
추상 클래스를 가인수의 형태로 하는 메소드도 정의해서는 안됩니다.
인터페이스 유형을 지정합시다.
void fooMethod(AbstractFooBar fooBar); // NG
void fooMethod(IFooBar fooBar); // OK
보충 추상 클래스로 폴리모피즘 걸고 싶은 경우는?
그럼, 추상 클래스의 아이 클래스군에 대해서 폴리모피즘 사용하고 싶은 경우는 어떻게 하는 거야?
라는 의문이 태어날 것 같아서.
그 경우는, 이하의 느낌으로.
이렇게 하면, 사용자는 항상 IFooBar 인터페이스 경유로 호출하면 되고,
IFooBar 인터페이스를 구현하는 사람은
AbstractFooBar를 확장할지 직접 IFooBar를 구현할지 선택할 수 있습니다.
모두가 행복해집니다.
Reference
이 문제에 관하여(인터페이스와 추상 클래스의 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kenjiro-U/items/b0ef11906aa7f8c5284b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
AbstractFooBar = new FooBar(); // NG
IFooBar = new FooBar(); // OK
void fooMethod(AbstractFooBar fooBar); // NG
void fooMethod(IFooBar fooBar); // OK
그럼, 추상 클래스의 아이 클래스군에 대해서 폴리모피즘 사용하고 싶은 경우는 어떻게 하는 거야?
라는 의문이 태어날 것 같아서.
그 경우는, 이하의 느낌으로.
이렇게 하면, 사용자는 항상 IFooBar 인터페이스 경유로 호출하면 되고,
IFooBar 인터페이스를 구현하는 사람은
AbstractFooBar를 확장할지 직접 IFooBar를 구현할지 선택할 수 있습니다.
모두가 행복해집니다.
Reference
이 문제에 관하여(인터페이스와 추상 클래스의 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kenjiro-U/items/b0ef11906aa7f8c5284b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)