2 min to read
Java 상속, 추상, 인터페이스 구현
extends, implements, abstract
상속 extends
- JAVA에선 다중상속을 허용하지 않는다.
- extends는 기본 Class를 확장하는 개념이다.
- 기존 잘 구현된 코드를 다시 사용함으로써 코드의 중복을 줄여준다(개발시간 절약)
// 예시 구현
public class AbstractExam {
// 필드
private String owner;
// 생성자
publlic AbstractExam(String owner) {
this.owner = owner;
}
// 메소드
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
}
// 상속 받을때
public class AbstractV2Exam extends AbstractExam{
// 내용 ...
}
추상 Class
- new 예약어를 사용하지 못한다
- 생성자가 반드시 존재 해야한다
- 말그대로 추상적인 클래스이다. 실체 클래스를 만들기 위해 부모 클래스로만 사용된다.
- 실제로 구현될 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적으로 사용
- 실체 클래스를 작성할 때 시간을 절약한다.
// 예시 구현
public abstract class AbstractExam {
// 필드
private String owner;
// 생성자(반드시 존재 하여아함)
public AbstractExam(String owner) {
this.owner = owner;
}
// 메소드
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
}
// 상속 받을때
public class AbstractV2Exam extends AbstractExam{
// 내용 ...
}
구현 implements
- 상속을 받는다는 것은 일반 상속이랑 다를것이 없지만 인터페이스 class를 상속받는다.
- 인터페이스 class는 정의한 메소드를 구현하지 않아도 된다.
- 다중상속을 허용하지 않는 JAVA에서의 대비책이다.
- 개발 코드와 객체가 서로 통신하는 접점 역할을 한다.
- 개발 코드를 수정하지 않고 사용하는 개체를 변경할 수 있도록 하기 위해 사용한다.
- 객체에 따라 내용과 리턴값이 달라진다.
// 예시 구현
public interface AbstractExam {
// 상수
// 변수 는 생성 불가, 상수만 가능.
// 타입 상수명 = 값;
public int TEST_VALUE = 10;
public String TEST_STR_VALUE = "TEST";
// 추상 메소드 {}가 없다면 하위 클래스에서 반드시 구현해야함
public int getValue();
public void setValue(int value);
// 디폴트 메소드
default void chkStrValue(String strTemp) {
if(strTemp.equals("TEST")) {
System.out.println("TEST 입니다.");
} else {
System.out.println("TEST 아닙니다.");
}
}
// 정적 메소드
static void showStrValue() {
System.out.println(TEST_STR_VALUE);
}
}
Comments