Overriding

kongsub·2020년 7월 28일
0

JAVA

목록 보기
8/15
post-thumbnail

오버라이딩 (Overriding)

: 오버라이딩이란 조상 클래스로부터 상속받은 메서드 내용을 변경하는 것을 말한다.
다음의 예제 코드는 2차원의 좌표를 표현하는 Point클래스가 있을 때, 이를 상속하는 3차원 좌표계의 한 점을 표현하는 Point3D클래스이다.

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;
    }
}

다음의 Point3D의 getLocation 메서드 내용에 z좌표 정보를 추가함으로써 부모 클래스에 있는 getLocation메서드를 오버라이딩 하고 있다.

오버라이딩 조건

  1. 이름이 같아야 한다.
  2. 매개변수가 같아야 한다.
  3. 반환타입이 같아야 한다.

-> 한마디로 선언부가 서로 일치해야한다. 단, 접근 제어자(modifier)와 예외(exception)은 제한된 조건 하에서만 다르게 변경할 수 있다.

  1. 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

  2. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
    Wrong Code - 다음의 코드는 자식 클래스에서 오버라이딩한 메소드의 예외를 조상 클래스보다 많이 한 경우이다.
    이는 잘못된 코드이다.

class Parent {
	void parentMethod() throws IOException, SQLException{
    	...
    }
    ...
}

class Child extends Parent {
	void parentMethod() throws Exception {
    	...
    }
    ...
}
  1. 인스턴스메서드를 static메서드 또는 그 반대로 변경이 불가능 하다.

* Static 메서드는 오버라이딩이라고 말 할 수 없다. 조상 클래스에서 선언된 Static 메서드를 자식 클래스에서 Static 메서드로 선언하는 것은 가능하나, 두 개의 메서드는 별개이다.

profile
심은대로 거둔다

0개의 댓글