
상속 개념

클래스 상속

메소드 재정의

- 부모의 메도드를 자식이 새롭게 다시 정의하는 것
- 쉽게 말해 “자식이 부모의 메소드를 고쳐쓰기” 하는 것
- 오버라이딩 규칙
- 부모 메소드의 선언부(이름, 매개변수)와 동일 해야함
- 접근제한을 더 강하게 못함
- 예) public → private(x)
- 새로운 예외는 추가로 throws 못함.

// 부모클래스
package exam13;
public class Calculator {
// 메소드 선언
// 원의 넓이를 구하는 메소드
public double areaCircle(double r) {
System.out.println("Calculator 객체의 areaCircle() 실행");
return r * r * 3.14;
}
public int ractangle(int width, int height) {
return width * height;
}
}
// 자식클래스
// areaCircle 만 재정의
package exam13;
public class Computer extends Calculator {
// 매소드 오버라이딩
/* 컴파일 시 정확히 오버라이딩이 되었는지 체크해 줌(생략 가능) */
//@Override
public double areaCircle(double r) {
System.out.println("Computer 객체의 areaCircle() 실행");
return Math.PI * r * r;
}
}
// 메인클래스
// 부모클래스 메소드호출
// 자식클래스 매소드 호출 및 상속받은 매소드 호출
package exam13;
public class ComputerExample {
public static void main(String[] args) {
int r = 10;
Calculator calculator = new Calculator();
System.out.println("원면적: " + calculator.areaCircle(r));
System.out.println();
Computer computer = new Computer();
System.out.println("원면적: " + computer.areaCircle(r));
System.out.println("사각형 넓이: " + computer.ractangle(r, r));
}
}
### 결과 ###
Calculator 객체의 areaCircle() 실행 // 부모 클래스
원면적: 314.0
Computer 객체의 areaCircle() 실행 // 자식 클래스
원면적: 314.1592653589793
사각형 넓이: 100

부모 메소드 호출