메소드 오버라이딩
메소드 오버라이딩이란 상위 클래스의 메소드를 하위클래스가 재정의 하는 것을 의미한다.
상위 클래스의 메소드를 그대로 가져다 쓰거나 상황에 따라 약간의 변형을 통해 사용하기 때문에, 오버라이딩한 메소드의 이름, 파라미터 갯수, 타입 등이 동일하여야 한다.
class Parent{
void say(){
System.out.println("부모 클래스.");
}
}
class Child{
void say(){
System.out.println("자식 클래스.");
}
}
오버라이딩한 메소드는 상속의 개념이기 때문에 부모 클래스의 해당 메소드의 동작이 포함되어 있어야한다.
상속은 분명 부모타입으로 자식타입을 참조할 수 있고 그 반대 역시 가능하다고 하였다.
그렇다면 이 경우에 오버라이딩된 메소드를 호출하면 어떻게 될까?
정답은 자식의 메소드가 실행된다는 것이다.
이는 java의 다형성 때문이다.
class ParentClass {
public void say() {
System.out.println("부모 클래스.");
}
}
class Child extends Parent {
public void say() {
System.out.println("자식 클래스.");
}
}
public class OverridingTest {
public static void main(String[] args) {
Parent p = new Parent();
p.say(); // 결과: 부모 클래스.
Child c = new Child();
c.say(); // 결과: 자식 클래스.
Parent o = new Child();
o.say(); // 결과: 자식 클래스.
}
}
상속을 시작하고부터 C언어 포인터를 처음 배울때와 같은 느낌이 든다.
깊게 공부하지 않았지만 헷갈리거나 모르는 부분에 대해 실제로 만들어보며 공부해야할 것 같다.
'Java > Base' 카테고리의 다른 글
[JAVA] 생성자 (0) | 2023.08.17 |
---|---|
[JAVA] getter(), setter() (0) | 2023.08.08 |
[JAVA] 상속 (0) | 2023.08.03 |
[JAVA] 클래스 다이어그램 (0) | 2023.08.01 |
[JAVA] Java 이해하기 (0) | 2023.08.01 |