본문 바로가기
JAVA

메서드 오버라이딩

by 융디's 2024. 3. 31.
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

'JAVA' 카테고리의 다른 글

추상 클래스  (0) 2024.04.25
불변 클래스  (0) 2024.04.22
상속  (0) 2024.03.31
객체지향 프로그래밍  (0) 2024.03.31
메서드 오버 로딩  (0) 2024.03.31