Programming/java
[Java] 오버라이딩 (overriding)과 super 키워드
필로그래머
2017. 5. 12. 11:27
[Java] 자바 오버라이딩 (overriding)과 super 키워드
오버라이딩 (overriding)
- 수퍼 클래스 (super cass)의 메서드를 재정의 하는 방법
- 서브 클래스의 조건에 맞춰서 기능을 바꾸는 것이 목적이다.
수퍼 클래스 예제
public class Student {
String name;
int age;
void print() {
//원칙 System.out.printf("이름 : %s\n", Student.this.name);
System.out.printf("이름 : %s\n", name);
System.out.printf("나이 : %d\n", age);
}
}
서브 클래스 예제
public class BitStudent extends Student{
String school;
void print() {
// 수퍼 클래스의 메서드를 재정의 할 때
// 기존 코드를 복사/붙여넣기 하는 대신
// 재정의하기 전의 기존 메서드를 호출하는 것이 편하다.
/*
System.out.printf("이름: %s\n", name);
System.out.printf("나이: %d\n", age);
*/
// 재정의 하기 전의 메서드를 가리키기 위해
// (주의! 수퍼 클래스라는 의미가 아니다!)
// super라는 키워드를 사용하여 메서드를 호출한다.
super.print(); // 이 메서드를 재정의하기 전의 메서드를 호
System.out.printf("학교: %s\n", school);
}
}
호출 코드
public static void main(String[] args) {
BitStudent s = new BitStudent();
s.name = "홍길동";
s.age = 20;
s.school = "비트대학교";
s.print();
}
- 수퍼 클래스의 메서드를 재정의할 때 기존 코드를 복사/붙여넣기 하는 대신
재정의하기 전의 기존 메서드를 호출하는 것이 편하다. 재정의 하기 전의 메서드를
가리키기 위해 super 라는 키워드를 사용하여 메서드를 호출한다.
* 참고
오버로딩 (overloading)
- 클래스 내에 동일한 이름을 가진 메서드를 여러 개 만들어 파라미터의 개수만 달리
하는 방법이다
- 메서드의 일관성을 유지하는 것이 목적이다.