📖이전글
객체지향 프로그래밍(1)-클래스와 객체,객체지향의의미,장단점
목차
다형성
객체지향의 4가지 특징 중 하나로, 하나의 클래스나 메소드가 다양한 방식으로 동작이 가능한 것을 의미한다.
구현하는 방법
다형성을 구현하는 방법에는 대표적으로 오버로딩과 오버라이딩이 있다.
오버라이딩(overriding)
상위 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다.
상속받은 메서드를 하위 클래스에서 변경해 사용해야 할 때 상위 메서드를 오버라이딩해 사용한다.
override 의 사전적인 의미는 '~위에 덮어쓰다(overwrite)' 이다. 참고하면 외우기 쉽다.
오버라이딩의 조건
하위 클래스에서 오버라이딩하는 메서드는 상위 클래스의 메서드와
- 이름이 같아야 한다.
- 매개변수가 같아야 한다. -> 오버로딩과의 차이점
- 반환 타입이 같아야 한다.
즉, 선언부가 서로 일치해야하고 내용만 변경해야 한다는 것이다.
오버라이딩시 주의할 점
1.접근 제어자는 상위 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
상위 클래스 메서드의 접근 제어자가 protected 라면, 하위 클래스에서 오버라이딩 할 시 메서드는 protected 나 public 이어야 한다.
2.상위 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
오버로딩(overloading)
상위 클래스에 없는 새로운 메서드를 정의하는 것을 오버로딩이라고 한다.
오버로딩의 조건
- 메소드의 이름이 같아야한다.
- 매개변수의 개수나 타입이 달라야 한다. -> 오버라이딩과의 차이점
- 주의할점은 매개변수가 같고 리턴값만 다를 경우 오버로딩을 할 수 없다. 2번이 충족되어야 한다.
구분 | 오버라이딩(overriding) | 오버로딩(overloading) |
접근 제어자 | 접근 제어자는 상위 클래스의 메서드보다 좁은 범위로 변경할 수 없다. | 모든 접근 제어자를 사용할 수 있다. |
리턴형 | 동일해야 한다. | 달라도 된다. |
메소드명 | 동일해야 한다. | |
매개변수 | 동일해야 한다. | 꼭 달라야 한다. |
참고
자바의 정석-남궁성