728x90
반응형
질문 : 구현 vs 확장 : 언제 사용합니까? 차이점이 뭐야?
이해하기 쉬운 언어 또는 일부 기사 링크로 설명하십시오.
답변
extends
는 클래스를 확장 하기위한 것입니다.
implements
은 인터페이스 를 구현하기위한 것입니다.
인터페이스와 일반 클래스의 차이점은 인터페이스에서 선언 된 메서드를 구현할 수 없다는 것입니다. 인터페이스를 "구현"하는 클래스 만이 메소드를 구현할 수 있습니다. 인터페이스에 해당하는 C ++는 추상 클래스입니다 (정확히 동일하지는 않지만 거의).
또한 Java는 클래스에 대한 다중 상속을 지원하지 않습니다. 이것은 여러 인터페이스를 사용하여 해결됩니다.
public interface ExampleInterface {
public void doAction();
public String doThis(int number);
}
public class sub implements ExampleInterface {
public void doAction() {
//specify what must happen
}
public String doThis(int number) {
//specfiy what must happen
}
}
이제 클래스 확장
public class SuperClass {
public int getNb() {
//specify what must happen
return 1;
}
public int getNb2() {
//specify what must happen
return 2;
}
}
public class SubClass extends SuperClass {
//you can override the implementation
@Override
public int getNb2() {
return 3;
}
}
이 경우
Subclass s = new SubClass();
s.getNb(); //returns 1
s.getNb2(); //returns 3
SuperClass sup = new SuperClass();
sup.getNb(); //returns 1
sup.getNb2(); //returns 2
또한 @Override
태그가 필요하지 않습니다. 원래 인터페이스 메서드 에는 재정의 할 것이 없기 때문입니다.
동적 바인딩, 다형성 및 객체 지향 프로그래밍의 일반적인 상속에 대해 더 많은 연구를 수행하는 것이 좋습니다.
출처 : https://stackoverflow.com/questions/10839131/implements-vs-extends-when-to-use-whats-the-difference
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
java.lang.NoClassDefFoundError 해결 방법 : javax / xml / bind / JAXBException (0) | 2021.12.29 |
---|---|
Java에서 파일을 byte []로 변환하는 방법 (0) | 2021.12.29 |
Java 쿼리 문자열 매개 변수의 URL 인코딩 (0) | 2021.12.19 |
JavaScript 링크 "#" vs "javascript : void (0)" (0) | 2021.12.19 |
Java Swing에서 set (Preferred | Maximum | Minimum) Size 메서드를 사용하면 안되는 이유 (0) | 2021.12.19 |