1. 오버라이딩(재정의)
조상클래스로부터 상속받은 메서드의 내용을 상속 받는 클래스에 맞게 변경하는 것
2. 오버라이딩의 조건
메서드의 선언부가 같아야한다.
접근 제어자를 좁은 범위로 변경할 수 없다.
조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
3. 오버로딩 VS 오버라이딩
오버로딩 - 기존에 없던 메서드를 새로 정의하는 것 new
오버라이딩 - 상속받은 메서드의 구현부를 바꾸는 것 modify
(예제)
<조상클래스>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package sec01_exam;
//조상클래스
public class HddDisk {
//멤버변수
int capacity;//용량
int rpm;//속도
//생성자
public HddDisk() {
}
//생성자
public HddDisk(int capacity, int rpm) {
super();
this.capacity = capacity;
this.rpm = rpm;
}
//메서드
public String Status() {
return "하드디스크의 용량은 " + this.capacity + "GB이며, " +
"RPM은 " + this.rpm + "입니다.";
}
}
|
cs |
<자손클래스>
조상클래스의 Status 메서드를 오버라이딩함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package sec01_exam;
//자손클래스
public class UsbMemory extends HddDisk{
int capacity;
int rpm;
public UsbMemory(int capacity, int rpm) {
super(10, 50);
this.capacity = capacity;
this.rpm = rpm;
}
@Override
public String Status() {
return "USB메모리 용량은 " + super.capacity + "GB이며, " +
"RPM은 " + super.rpm + "입니다.";
}
}
|
cs |
<실행클래스>
조상의 Status 메서드를 호출하면 당연히 조상의 메서드가 호출되고
자손 객체를 만들어 Status메서들를 호출하면 자손의 메서드가 호출됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package sec01_exam;
public class DiskEx {
public static void main(String[] args) {
HddDisk hddDisk = new HddDisk(500,7200);
UsbMemory usbMemory = new UsbMemory(32, 520);
String str = hddDisk.Status();
System.out.println(str);
str = usbMemory.Status();
System.out.println(str);
}
}
|
cs |
<실행결과>
728x90
'JAVA > java 이론' 카테고리의 다른 글
[자바JAVA]제어자 modifier / 접근 제어자/ 제어자의 조합 (0) | 2020.10.21 |
---|---|
[자바JAVA] 싱글톤 디자인 패턴 (0) | 2020.10.20 |
[자바JAVA]상속/포함관계 (0) | 2020.10.18 |
[자바JAVA] 생성자 constructor / this()/ 생성자를 이용한 인스턴스 복사 (0) | 2020.10.11 |
[자바JAVA]final필드와 상수 (0) | 2020.10.10 |