상속(Inheritance)이란?
객체지향 프로그래밍, OOP에는 다음과 같은 특징들이 있다.
1. 상속과 인터페이스 (계층성)
2. 다형성, 사용편의성 (모듈화)
3. 캡슐화, 정보은닉
4. 자료 추상화 (모델링)
5. 동적 바인딩
자바에서 상속은 세가지로 구현할 수 있다.
- extends
- 부모에서 선언 / 정의를 모두하며 자식은 메소드 / 변수를 그대로 사용할 수 있음
- implements (interface 구현)
- 부모 객체는 선언만 하며 정의(내용)은 자식에서 반드시 오버라이딩 (재정의) 해서 사용해야함
- abstract
- extends와 interface 혼합. extends하되 몇 개는 추상 메소드로 구현되어 있음
extends
- 상속의 가장 대표적인 형태이다.
- 부모의 메소드를 그대로 사용할 수 있으며 오버라이딩 할 필요 없이 부모에 구현되어있는 것을 직접 사용 가능하다.
class Vehicle {
protected int speed = 3;
public int getSpeed(){
return speed;
}
public void setSpeed(int speed){
this.speed = speed;
}
}
class Car extends Vehicle{
public void printspd(){
System.out.println(speed);
}
}
public class ExtendsSample {
public static main (String[] args){
Car A = new Car();
System.out.println(A.getSpeed());
A.printspd();
}
}
extends에서 짚고 넘어갈 점은 자바는 "다중상속"을 지원하지 않는다는 점이다.
extends를 사용하면 부모클래스가 두 개 이상 존재할 수 없다.
따라서 나온 것이 implements이다.
implements (상속)
interface TestInterface{
public static int num = 8;
public void fun1();
public void fun2();
}
class InterfaceExam implements TestInterface{
@Override
public void fun1(){
System.out.println(num);
}
@Override
public void fun2() {
}
}
public class InterfaceSample{
public static void main(String args[]){
InterfaceExam exam = new InterfaceExam();
exam.fun1();
}
}
implements의 가장 큰 특징은 이렇게 부모의 메소드를 반드시 오버라이딩(재정의)해야 한다.
간단 정리
- extends는 일반 클래스와 abstract 클래스 상속에 사용되고, implement는 interface 상속에 사용된다.
- class가 class를 상속받을 땐 extends를 사용하고, interface가 interface를 상속 받을 땐 extends를 사용한다.
- class가 interface를 상속 받을 땐 implements를 써야한다.
- interface가 class를 상속 받을 땐 implements를 쓸수 없다.
- extends는 클래스 한 개만 상속 받을 수 있다.
- extends 자신 클래스는 부모 클래스의 기능을 사용한다.
- implements는 여러개 사용 가능하다.
- implements는 설계 목적으로 구현 가능하다.
- implements한 클래스는 implements의 내용을 다 사용해야 한다.
reference
'♾️Language & Framework > ☕Java' 카테고리의 다른 글
[Java] - Timestamp 자료형에서 에러가 발생했을 때 (1) | 2024.01.01 |
---|---|
[Java] - Java 프로젝트 초기 설정 + 자바 버전 변경 (0) | 2024.01.01 |
[Java] - Lombok이란? (0) | 2023.11.09 |
[Java 기술 면접 대비] - 4. @Bean VS @Component (0) | 2023.11.07 |
[Java 기술 면접 대비] - 3. Java Bean VS Spring Bean (0) | 2023.11.07 |