반응형
이전에 배운 내용
[JAVA] package와 import
이전에 배운 내용 2023.10.19 - [내일 배움 캠프_Spring _3기/프로그래밍 기초 주차(2023.10.12~30)] - [JAVA] 접근제어자 [JAVA] 접근제어자 이전에 배운 내용 [JAVA] 생성자, this와 this( ) [JAVA] 생성자, this와 this(
dev-story93.tistory.com
상속은 부모가 자식에게 물려주는 행위이다.
객체지향 프로그램도 부모클래스의 필드와 메서드를 자식클래스에게 물 줄 수 있다.(상속)
상속을 사용하면 적은 양의 코드로 새로운 클래스를 만들 수 있고 공통되는 코드를 관리하기 용이하다.
이러한 특성 때문에 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지보수에 매우 유리하다.
상속
클래스끼리의 상속은 extends 키워드를 사용한다.
public class 자식클래스 extends 부모클래스 {
}
상속은 extends 부모클래스가 추가된다
- 상속의 키워드는 extends입니다. 눈치채셨나요?
- 우리는 상속의 개념을 확장의 개념으로 이해해야 합니다.
- 자칫하여 부모 클래스, 자식 클래스라는 용어에 현혹되어 ‘부모가 자식보다 큰 사람이니까 부모 클래스도 마찬가지로 자식 클래스 보다 큰 범위겠지?’라고 생각하는 순간 헷갈리기 시작합니다…
- 헷갈리기 시작할 때마다 아래 그림을 항상 기억하세요! 그리고 아래 3 문장을 떠올리세요!

- 부모 클래스에 새로운 필드와 메서드가 추가되면 자식 클래스는 이를 상속받아 사용할 수 있다.
- 자식 클래스에 새로운 필드와 메서드가 추가되어도 부모 클래스는 어떠한 영향도 받지 않는다.(단방향 부모만 줄 수 있다)
- 따라서 자식 클래스의 멤버 개수는 부모 클래스보다 항상 같거나 많다.
부모클래스
public class Car {
String company; // 자동차 회사
private String model; // 자동차 모델
private String color; // 자동차 색상
private double price; // 자동차 가격
double speed; // 자동차 속도 , km/h
char gear = 'P'; // 기어의 상태, P,R,N,D
boolean lights; // 자동차 조명의 상태
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public double gasPedal(double kmh, char type) {
changeGear(type);
speed = kmh;
return speed;
}
public double brakePedal() {
speed = 0;
return speed;
}
public char changeGear(char type) {
gear = type;
return gear;
}
public boolean onOffLights() {
lights = !lights;
return lights;
}
public void horn() {
System.out.println("빵빵");
}
}
자식클래스
public class SportsCar extends Car{
String engine;
public void booster() {
System.out.println("엔진 " + engine + " 부앙~\n");
}
}
메인클래스
public class Main {
public static void main(String[] args) {
// 부모 클래스 객체에서 자식 클래스 멤버 사용
Car car = new Car();
// car.engine = "Orion"; // 오류
// car.booster(); // 오류
// 자식 클래스 객체 생성
SportsCar sportsCar = new SportsCar();
sportsCar.engine = "Orion";
sportsCar.booster();
// 자식 클래스 객체에서 부모 클래스 멤버 사용
sportsCar.company = "GENESIS";
sportsCar.setModel("GV80");
System.out.println("sportsCar.company = " + sportsCar.company);
System.out.println("sportsCar.getModel() = " + sportsCar.getModel());
System.out.println();
sportsCar.horn();
System.out.println(sportsCar.changeGear('D'));
}
}
위에 예제를 보면 부모클래스는 자식클래스의 멤버를 사용 못한다.
자식클래스는 본인의 멤버를 사용함은 물론, 부모클래스의 멤버도 사용가능하다.
자식클래스가 부모클래스를 불러오는 것은 단지 클래스명 옆에 extands 부모클래스 만 적으면 된다.
다음은 상속관계와 포함관계에 대해 알아보자!
반응형
'언어(language) > 자바(Java)' 카테고리의 다른 글
| [JAVA] 단일상속, 다중상속, final 클래스, final 메서드, object (0) | 2023.10.19 |
|---|---|
| [JAVA] 상속관계와 포함관계 (2) | 2023.10.19 |
| [JAVA] package와 import (2) | 2023.10.19 |
| [JAVA] 접근제어자 (0) | 2023.10.19 |
| [JAVA] 생성자, this와 this( ) (0) | 2023.10.19 |