728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Object Oriented Programming > Java Method Overriding
하위 클래스가 상위 클래스에서 상속할 때 해당 메서드도 상속합니다. 그러나 슈퍼클래스 메서드를 재정의할 수도 있습니다(새 메서드를 선언하고 구현함). 다음 스포츠 class를 고려하십시오.
class Sports{
String getName(){
return "Generic Sports";
}
void getNumberOfTeamMembers(){
System.out.println( "Each team has n players in " + getName() );
}
}
다음으로 Sports 클래스에서 상속되는 Soccer 클래스를 만듭니다. getName 메서드를 재정의하고 다른 하위 클래스별 문자열을 반환할 수 있습니다.
class Soccer extends Sports{
@Override
String getName(){
return "Soccer Class";
}
}
Note : 메서드를 재정의할 때 @Override 주석을 앞에 두어야 합니다. 재정의된 메서드의 매개변수 및 리턴 유형은 상위 유형에서 상속된 메서드의 것과 정확히 동일해야 합니다.
Task
슈퍼클래스의 getNumberOfTeamMembers 메서드와 동일한 명령문을 출력하는 재정의된 getNumberOfTeamMembers 메서드를 작성하여 편집기에서 코드를 완성합니다. 단, (축구팀의 선수 수)로 대체합니다.
Output Format
실행되면 완성된 코드는 다음을 출력해야 합니다.
Generic Sports
Each team has n players in Generic Sports
Soccer Class
Each team has 11 players in Soccer Class
Code
import java.util.*;
class Sports{
String getName(){
return "Generic Sports";
}
void getNumberOfTeamMembers(){
System.out.println( "Each team has n players in " + getName() );
}
}
class Soccer extends Sports{
@Override
String getName(){
return "Soccer Class";
}
// Write your overridden getNumberOfTeamMembers method here
@Override
void getNumberOfTeamMembers(){
System.out.println( "Each team has 11 players in " + getName() );
}
}
public class Solution{
public static void main(String []args){
Sports c1 = new Sports();
Soccer c2 = new Soccer();
System.out.println(c1.getName());
c1.getNumberOfTeamMembers();
System.out.println(c2.getName());
c2.getNumberOfTeamMembers();
}
}
오버라이딩 (Overriding)
- 객체 지향 프로그래밍에서 상속 관계에 있는 부모 클래스의 메서드를 자식 클래스에서 재정의하여 사용하는 개념.
- 다형성(Polymorphism)의 핵심 요소 중 하나.
- 다양한 클래스의 객체가 동일한 메서드 호출로 다르게 동작할 수 있도록 함.
- 코드 재사용성 향상.
- 부모 클래스와 자식 클래스 간의 유연한 상호 작용 가능.
오버라이딩 특징
1. 메서드 시그니처 : 오버라이딩을 하려면 자식 클래스에서 부모 클래스의 메서드와 동일한 이름, 매개변수 목록(메서드 시그니처)을 가져야 한다. 메서드 이름과 매개변수 목록이 동일하지 않으면 오버라이딩이 아니라 메서드 오버로딩이 된다.
2. @Override 어노테이션 : 자바 5 이상 버전에서는 @Override 어노테이션을 사용하여 컴파일러에게 오버라이딩을 의도하고 있는 메서드임을 알려 줄 수 있다. 어노테이션을 사용하면 실수로 오버라이딩을 잘못한 경우 컴파일러가 오류를 발생시켜 준다.
3. 상속 관계 : 오버라이딩은 부모 클래스와 자식 클래스 간의 상속 관계에서 발생한다. 즉, 자식 클래스가 부모 클래스를 확장(상속)하고 있는 경우에만 오버라이딩을 사용할 수 있다.
4. 메서드 재정의 : 자식 클래스에서 오버라이딩된 메서드는 부모 클래스의 동일한 메서드 시그니처를 가지면서 다르게 구현된다. 즉, 자식 클래스에서 메서드의 내용을 재정의하여 자식 클래스의 요구에 맞게 동작하도록 할 수 있다.
5. 동적 바인딩 : 오버라이딩된 메서드는 런타임 시 동적 바인딩에 의해 호출된다. 따라서 객체의 실제 타입에 따라 적절한 오버라이딩된 메서드가 실행된다.
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java Instanceof keyword (0) | 2023.10.30 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java Method Overriding 2 (Super Keyword) (0) | 2023.10.27 |
[해커랭크(HackerRank) JAVA 풀이] - Java Interface (1) | 2023.10.25 |
[해커랭크(HackerRank) JAVA 풀이] - Java Abstract Class (1) | 2023.10.24 |
[해커랭크(HackerRank) JAVA 풀이] - Java Inheritance II (0) | 2023.10.23 |