Java/JAVA의 정석_객체지향

오버라이딩(Overriding)

Jenny_yoon 2022. 10. 30. 23:37
728x90
반응형

1)특징

- 상속받은 조상의 메서드를 자신에 맞게 변경하는 것

ex. 예시

package ch7;

class Point {
	int x;
	int y;
	
	String getLocation() {
		return "x :" + x + ", y :"+ y;
	}
}

class Point3D extends Point {
	int z;
	String getLocation() { //오버라이딩 (String문장 추가하고 z내용 추가)
		return "x :" + x + ", y :"+ y + ", z:" + z;
	}
}
public class Overriding {
	public static void main(String[] args) {
	Point3D p = new Point3D();
	p.x =3;
	p.y =5;
	p.z =7;
	System.out.println(p.getLocation());
	}
}
더보기

실행결과 : x :3, y :5, z:7

2) 오버라이딩 조건

  • - 선언부(반환타입, 메서드이름, 매개변수 목록)가 조상 클래스의 메서드와 일치해야 한다.
  • ex. line 7, 14의 String getLocation() 가 일치.
  • - 접근 제어자(public, protected, default, private)를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
  • - 예외(선언)(throws IOException, SQLException..)는 조상 클래스의 메서드보다 많이 선언할 수 없다.

3) 오버로딩 VS 오버라이딩

- 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것(new)(상속과 관련x)

- 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것(change, modify)

728x90
반응형