728x90
메서드 오버라이딩
@2024.03.26
메서드 오버라이딩(Overriding)
💡
부모 클래스의 메서드를 자식 클래스에서 재정의하는 것이다
메서드의 이름, 파라미터의 개수, 타입이 모두 동일해야 한다.
메서드의 이름, 파라미터의 개수, 타입이 모두 동일해야 한다.
- 메서드가 오버라이딩 되면
무조건 자식의 메서드가 실행
된다.
- 단! 필드는 타입을 따라가고, 메서드는 오버라이딩된 자식의 메서드가 실행된다.
//부모 public class Parent{ int i = 6; public int getI(){ return i; } } //자식 public class Chlid extends Parent{ int i = 10; public int getI(){ // 메서드 오버라이딩 return i; } } //테스트 public class Test{ public static void main(String[] args){ Chlid c = new Chlid(); System.out.println(c.i) // 10 System.out.println(c.getI()); //10 Parent p = new Chlid(); // 필드는 타입을 따라가고, 메소드는 오버라이딩된 자식의 메서드가 실행 System.out.println(p.i); //6 System.out.println(p.getI()); //10
- Object가 오버라이딩하라고 제공하는 메서드
toString()
: 객체를 문자열로 나타내며, 기본적으로 클래스 이름과 해당 객체의 해시 코드를 반환
equals()
: 두 객체가 동등한지 비교하며, 기본적으로 두 객체의 레퍼런스가 동일한지 비교
hashCode()
: 객체의 해시 코드를 반환해시 코드
: 객체를 저장하거나, 검색하는 데 사용되는 해시 테이블과 같은 데이터 구조에 키로 사용된다.
- equals() 메서드를 오버라이드할 때 일반적으로 hashCode()도 같이 오버라이드 한다.
→ 두 객체가 equals()을 통해 동등하면 그들의 해시 코드도 동일해야 하기 때문
728x90