[TIL][Java][2024-01-02] 오버라이딩
2024. 1. 2. 20:39ㆍTIL/Java
오버라이딩
- 부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것이다.
- 오버라이딩의 조건
- 선언부가 부모클래스의 메서드와 일치해야 한다.
- 접근제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 부모클래스의 메서드보다 많이 선언할 수 없다.
// 부모 클래스
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 SportsCar(String engine) {
this.engine = engine;
}
@Override
public double brakePedal() {
speed = 100;
System.out.println("스포츠카에 브레이크란 없다");
return speed;
}
@Override
public void horn() {
booster();
}
}
// 출력 확인
public class Main {
public static void main(String[] args) {
// 부모 클래스 자동차 객체 생성
Car car = new Car();
car.horn(); // 경적
System.out.println();
// 자식 클래스 스포츠카 객체 생성
SportsCar sportsCar = new SportsCar("Orion");
// 오버라이딩한 brakePedal(), horn() 메서드 호출
sportsCar.brakePedal();
sportsCar.horn();
}
}
'TIL > Java' 카테고리의 다른 글
[TIL][Java][2024-01-15] 추상 클래스 (0) | 2024.01.16 |
---|---|
[TIL][Java][2023-12-29] 상속 (0) | 2023.12.29 |
[TIL][Java][2023-12-28] 접근제어자 (0) | 2023.12.28 |
[TIL][Java][2023-12-27] this 와 this() (0) | 2023.12.27 |
[TIL][Java][2023-12-22] 생성자 (constructor) (0) | 2023.12.22 |