블로그에 보시면 인터페이스와 추상클래스에 대한 설명이 있습니다.
extends와 implements를 이해하려면 꼭 알아야 하는 부분입니다.
이 글은 인터페이스와 추상클래스의 개념을 잡고 보기를 추천합니다.
extends의 특징
- extends는 abstract 클래스만 상속받을 수 있습니다.
- extends는 단 하나만 상속 받을 수 있습니다.
- 한번 상속 받은 클래스를 계속해서 사용할 수 있습니다. 단 금지하는 부분은 다음 코드와 같은 상황입니다. extends를 이용하면 한번에 하나만 가져올 수 있습니다.
class Number extends One, Two {
}
- abstract안에 추상 클래스로 정의된 것은 무조건 오버라이드 해야합니다.
- 상속받은 클래스를 다시 상속받으면 최상위 abstract 클래스의 메소드를 사용할 수 있습니다.
abstract class Two {
public void remove(){
//Abstract Class
}
}
class Number extends Two {
}
class Count Number {
@Override
public void remove() {
super.remove();
}
}
implements의 특징
- implements는 다중 상속이 가능합니다.
- implements는 인터페이스를 상속받기 때문에 인터페이스에 정의된 모든 메소드를 오버라이드 해야 합니다.
많은 분들이 extends와 implements의 차이점을 이야기 할때 expends는 부모로부터 상속받고 implements는 조언자에게 부터 상속받는다고 표현합니다. extends는 class 하나가 하나의 부모만 상속받을 수 있지만 implements는 여러 조언자로부터 상속받을 수 있기 때문입니다.
마지막으로 제 개인적인 의문이였습니다.
implements에 있는 메소드를 쓰고는 싶은데 or 내가 abstract class를 상속받아 사용하고 싶은데 추상메소드가 정의돼 있습니다. 내가 사용하지는 않고 양이 매우 많다면 어떻게 해야 할까요?
이 코드는 제 개인적인 해결법이였는데 좀 더 좋은방법이 있으면 알고싶습니다. 밑에 코드는 하나의 클래스 Number을 제작하여 (사용하지 않는 클래스입니다. ) 내가 상속받고싶은것들을 한번 정의하고 이 클래스를 다시 Count 클래스로 상속받아 꼭 필요한것만 제작하여 사용했습니다.
class Number implements One {
@Override
public void make() {
}
@Override
public void reset() {
// TODO Auto-generated method stub
}
@Override
public void reset2() {
// TODO Auto-generated method stub
}
}
class Count extends Number {
}
'Java & Spring Boot' 카테고리의 다른 글
Java -jar 커맨드 명령어 (0) | 2020.09.11 |
---|---|
H2 In-Memory 사용법 (0) | 2020.06.15 |
인터페이스와 추상 클래스 (0) | 2018.11.28 |
Java SE와 Java EE 차이점 (0) | 2018.11.24 |
이클립스 패키지 차이점 (0) | 2018.11.24 |