오버라이딩

김설영·2022년 3월 29일
0

오버라이딩(overriding)

  • 상속받은 조상의 메서드를 자신에게 맞게 변경하는 것 (덮어쓰는 것)
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. 접근 제어자(public, protected, default, private)를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
    3. 예외(throws IOException 등)는 조상 클래스의 메서드보다 많이 선언할 수 없다. (같거나 적어야 됨)
  • 오버로딩 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
블로그 이동하였습니당! -> https://kimsy8979.tistory.com/

0개의 댓글