728x90
반응형
메서드 오버라이딩(Method Overriding)
메서드 오버라이딩이란 같은 이름의 메서드를 덮어쓰는 것을 의미한다. 오버로딩이 여러 메소드를 하나의 이름으로 정의하는 것이라면 오버라이딩이란 상속 관계에서 부모 클래스에 정의된 메소드를 자식 클래스에서 다시 정의하는 것이다.
🔽 메서드 오버로딩이란?
🔽 자바 객체 지향 프로그래밍 / 상속화란?
앞에서 했던 상속 예시인 휴대폰 예시 중 전화걸기 메서드만 가지고 와보았다.
public class Example {
public static void main(String[] args) {
Phone myPhone = new Phone("Samsung", "Galaxy");
Iphone myIphone = new Iphone("Apple", "iPhone 13");
// Phone 클래스의 call 메서드 호출
myPhone.call();
// Iphone 클래스의 오버라이딩된 call 메서드 호출
myIphone.call();
// Iphone 클래스에서 추가된 call 메서드 호출
myIphone.call("010-1234-5678");
}
}
// 부모 클래스
class Phone {
// 부모 클래스 매개 변수 없는 call()
public void call() {
System.out.println("일반 전화를 걸고 있습니다.");
}
// 부모 클래스 매개 변수 있는 call()
public void call(String phoneNumber) {
System.out.println(phoneNumber+" 님과 전화 중");
}
// 부모 클래스인 Phone 클래스의 속성과 메서드를 상속받는 Iphone 메서드
class Iphone extends Phone {
// 부모 클래스의 call메서드 오버라이딩
public void call() {
System.out.println("페이스타임 중입니다.");
}
// 부모 클래스의 call메서드 오버라이딩
public void call(String phoneNumber) {
this.phoneNumber = phoneNumber;
System.out.println(phoneNumber+" 님과 페타 중");
}
}
// 결과값
// 일반 전화를 걸고 있습니다.
// 페이스타임 중입니다.
// 010-1234-5678 님과 페타 중
✅코드 분석✅
자식의 메소드인 Iphone 메소드에 부모 메소드에 존재하는 call() 메서드와 이름이 동일한 call() 메서드를 만들었다. 그리고 매개변수를 받는 call 메서드도 하나 더 만들어 주었다. 이 메서드의 매개변수 값은 this.phoneNumber = phoneNumber로 하여 받아오는 값을 객체의 phoneNumber 로 설정해주었다.
이렇게 자식 에게도 부모와 동일한 이름의 call 메서드를 만들어 주고 결과 값을 출력 해보았다. 자식 클래스로 만들어진 객체 iphone에서 call 메서드를 호출했을 때 부모의 메서드를 덮어쓰고 자식의 메서드가 호출되어 값이 저장된 후 나오는 것을 확인할 수 있다.
이런 것이 바로 오버라이딩(overriding) 이다.
728x90
반응형
'LANGUAGE > JAVA' 카테고리의 다른 글
[JAVA] 객체 지향 프로그래밍 / 다형성(polymorphism) - 오버로딩, 오버라이딩, 참조변수의 타입 변환, instanceof 연산자 (0) | 2023.04.27 |
---|---|
[JAVA] 객체 지향 프로그래밍의 속성 / 캡슐화(Encaptulation) (0) | 2023.04.25 |
[JAVA] 자바 객체 지향 프로그래밍 / 상속화(inheritance) (0) | 2023.04.25 |
[JAVA] 기본 변수 와 참조 변수 / 하루 종일 걸려 이해한 참조 변수 쉽게 이해하기 위해 정리 (0) | 2023.04.25 |
[JAVA] System.arraycopy 배열에 값 추가하기 / 배열 복사 메서드 (0) | 2023.04.24 |