자바의 정석 - 오버라이딩

Yohan·2024년 1월 18일
0

오버라이딩

  • 상속받은 조상의 메서드를 자신에 맞게 변형하는 것 (내용(선언부) 변경 가능)
class Point {
    int x;
    int y;
    
    String getLocation() { // 선언부
    	return "x :" + x + ", y :"+ y; // 구현부
    }
}
class Point3D extends Point {
    int z;
    
    String getLocation() { // 오버라이딩 (내용 변경)
    	return "x :" + x + ", y :"+ y + ", z :" + z;
    }
}

오버라이딩 조건

  1. 선언부가 조상 클래스의 메서드와 일치해야 한다.
  2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
  3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.

오버로딩 vs 오버라이딩

  • 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것(new)
  • 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것(change, modify)
class Parent() {
	void parentMethod() {}
}

class Child extends Parent {
	void parentMethod() {} // 오버라이딩 
    void parentMethod(int i) {} // 오버로딩
    
    void childMethod() {} // 메서드 정의
    void childMethod(int i) {} // 오버로딩
    void childMethod() {} // 중복정의
}
profile
백엔드 개발자

0개의 댓글