overloading 과 overriding

yeongnie·2022년 8월 15일
0

java

목록 보기
2/2
post-thumbnail
post-custom-banner

다형성; polymorphism; 폴리모피즘

  • poly-(많다)는 뜻의 접두어와 morphism(형태)
  • 폴리모피즘은 객체지향 프로그래밍 언어에서 "오버로딩 (overloading)", "오버라이딩 (overriding)"의 형태로 나타난다.
  • 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질로서 다양한 기능 이용할 수 있음
  • 다형성을 위해 부모 클래스 인터페이스의 타입 변환을 허용한다. 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.


overloading 오버로딩

  • 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것; 많이 싣을 수 있다!
  • 하나의 메소드 이름으로 여러 기능을 담는다
  • 매개 변수의 타입, 개수, 순서가 달라야 한다!
public void plus(int x, int y){
	int result = x + y;
	return result;
}

public void plus(double x, double y){
	double result = x + y;
	return result;
}

overriding 오버라이딩

부모 클래스의 모든 메소드가 자식 클래스가 사용하기에 부적합한 경우 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 한다. 자바는 이런 경우에서 오버라이딩(overriding) 기능을 제공한다.

  • 자식 클래스에서 동일한 메소드를 재정의하는 것
  • 메소드가 오버라이딩되었다면 부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출된다.

overriding 규칙

  • 부모의 메소드와 동일한 시그니처(리턴 타입, 메소드 이름, 매개 변수 리스트)를 가져야 한다.
  • 접근 제한을 더 강하게 오버라이딩 할 수 없다.
  • 새로운 예외(Exception)을 thorows할 수 없다
profile
curiosity-paradise
post-custom-banner

0개의 댓글