오버라이딩(Overriding)

1084 단어 JavaJava

오버라이딩(Overriding)

class Point {
	int x, 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. 예외(throws)는 조상 클래스의 메서드보다 많이 선언할 수 없다.

오버로딩 vs 오버라이딩

class Parent {
	void p_method() {}
}

class Child extends Parent {
    void p_method() {} // 오버라이딩
    void p_method(int i) {} // 오버로딩
    
    void c_method() {} // 메서드 정의
    void c_method(int i) {} // 오버로딩
    void c_method() {} // ERROR:중복 정의
}
  • 오버로딩 : 기존에 없는 새로운(이름이 같은) 메서드를 정의하는 것 (new)
  • 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것 (change, modify)

좋은 웹페이지 즐겨찾기