오버로딩 & 오버라이딩

coding by 스플릿·2021년 12월 28일
0

Java1

목록 보기
28/44

오버로딩

정의

한 클래스 내에서 같은 이름의 메서드가 있더라도 매개변수의 개수나 타입이 다르면 메서드를 정의 할 수 있다.

조건

  1. 메서드의 이름이 같아야 함
  2. 매개변수의 개수 또는 타입이 달라야 한다.
  3. 반환 타입은 관계없다.
  • 매개변수에 의해서만 구별이 될 수 있기 때문에 매개변수의 개수와 타입이 모두 같으면 중복 정의가 되어 에러가 발생

예시

println 메서드

  • void println()
  • void println(boolean x)
  • void println(char x)
  • .......
  • void println(String x)

매개 변수에 따라서 오버로딩된 메서드들 중 하나가 선택되어 실행되는 것

오버라이딩

정의

조상 클래스로부터 상속받은 메서드의 내용을 자식 클래스에서 자신에 맞게 변경하는 경우

조건

  1. 선언부가 조상 클래스의 메서드와 같아야 한다.

  2. 조상 클래스의 메서드보다 좁은 범위의 접근 제어자로 변경 할 수 없다.
    (조상 클래스의 메서드가 protected 라면 오버라이딩하는 자식 클래스의 메서드는 protected, public이여야 한다)

  3. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다

예시

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;
    }
}
  • 기존에 Point클래스를 사용하는 다른 코드를 방해하지 않기 위해서 오버라이딩

오버로딩, 오버라이딩 차이

  • 오버로딩 : 기존에 없는 새로운 메서드를 선언 ( 이름만 같은 새로운 메서드 )
  • 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것

0개의 댓글