1. 오버라이딩
클래스를 상속받아 해당 조상 클래스의 메서드를 변경하여 사용하는 것을 말합니다.
// 오버라이딩의 예
class A {
int a;
int b;
String getVal() {
return "a :" + a + ", b :" + b;
};
}
class B extends A {
int c;
String getVal() { // 메서드 오버라이딩
return "a :" + a + ", b :" + b + ", c :" + c;
};
}
2. Condition
오버로딩과 달리 오버라이딩은 다음 규칙을 만족해야 합니다.
- 메소드 이름이 동일
- 매개변수 동일.
- 반환타입이 동일.
오버로딩과 오버라이딩의 차이를 예를 통해 한 눈에 봅시다.
// 오버로딩과 오버라이딩의 차이구분
class A {
void a() {};
}
class B extends A {
void a() {}; // 오버라이딩
void a(int i) {}; // 오버로딩
void b() {}; //새롭게 정의
void b(int i) {}; // 오버로딩
}
즉 오버로딩은 해당 메소드를 재정의 하여 파라미터를 다르게 한다는 등으로 쓰이게 됩니다.
앞서 포스팅을 해놓은 오버로딩을 참고하시기 바랍니다.
2019/07/03 - [프로그래밍 언어/Java] - Java - Overloading
3. super
super는 상위 클래스 즉 상속 받은 클래스에서의 맴버변수를 자신의 클래스내 변수와 이름이 같거나 할 떄 구분해줍니다.
public class Test {
public static void main(String[] args) {
B b = new B();
b.method();
}
}
class A {
int x = 10;
}
class B extends A {
int x = 20;
void method() {
System.out.println("x = " + x);
System.out.println("this.x = " + this.x);
System.out.println("super.x = " + super.x);
}
}
이는 main에서 수행하게 될 경우
해당 B클래스에서 method를 호출하게 되고
여기서 그냥 x와 this.x는 해당 B클래스의 x변수를 말하므로 20입니다.
super.x는 상속받은 A클래스 내 x값을 의미하므로 super.x는 10입니다.
따라서 출력 결과는 아래와 같습니다.
x = 20
this.x = 20
super.x = 10
전에 했던 this()와 마찬가지로 super() 는 조상 클래스의 생성자를 호출해줍니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java - 제어자 (0) | 2019.07.10 |
---|---|
Java- 상속 (0) | 2019.07.08 |
Java- 변수 초기화 (0) | 2019.07.07 |
Java- 생성자(Constructor) (0) | 2019.07.04 |
Java- 가변인자 (0) | 2019.07.04 |