메서드 오버라이딩(Method Overriding)
메서드 오버라이딩이란 같은 이름의 메서드를 덮어쓰는 것을 의미한다. 오버로딩이 여러 메소드를 하나의 이름으로 정의하는 것이라면 오버라이딩이란 상속 관계에서 부모 클래스에 정의된 메소드를 자식 클래스에서 다시 정의하는 것이다.
🔽 메서드 오버로딩이란?
[JAVA] JAVA 객체지향 프로그래밍 / 메서드 오버로딩(Method Overloading)이란?
메서드 오버로딩(Method Overloading) 메서드 오버로딩이란 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것을 의미한다. 매개변수의 개수, 자료형, 순서 등을 다르게 하여 같은 이름의
luminousolding.tistory.com
🔽 자바 객체 지향 프로그래밍 / 상속화란?
[JAVA] 자바 객체 지향 프로그래밍 / 상속화(inheritance)
[JAVA] 객체 지향 프로그래밍 기초 / 추상화란? OOP의 특성 알기 객체 지향 프로그래밍이란? 우리가 보고 느끼고 인지할 수 있는 모든 것을 객체(Object)라고 한다. 객체 지향 프로그래밍(OOP, Object Orien
luminousolding.tistory.com
앞에서 했던 상속 예시인 휴대폰 예시 중 전화걸기 메서드만 가지고 와보았다.
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) 이다.
'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 |