Dreams come true!

[JAVA] 오버라이딩, 오버로딩 본문

자바

[JAVA] 오버라이딩, 오버로딩

loveYoon 2020. 6. 25. 20:23

1. 오버라이딩

 

1-1. 메소드 오버라이딩 = 메소드 재정의

- 상속된 부모 클래스의 메소드 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의하는 것

- 자식클래스에서 부모 클래스의 메소드를 오버라이딩하게 되면, 부모 클래스의 메소드는 숨겨지고 오버라이딩된 자식 메소드만 사용된다.

 

* 메소드 오버라이딩 규칙

- 부모의 메소드와 동일한 시그니처(리턴타입, 메소드명, 매개변수 리스트)를 가져야 한다.

- 접근 제한을 더 강하게 오버라이딩할 수 없다. (반대는 가능)

- 새로운 예외를 thorows를 할 수 없다.

 

* 부모 메소드 호출(super)

- 자식클래스에서 오버라이딩된 부모클래스의 메소드를 호출해야 하는 상황이 발생하면 명시적으로 super키워드를 붙여서 부모 메소드를 호출할 수 있다.

 

* 오버라이딩할 수 없는 final 메소드

메소드 선언 시 final 키워드를 붙이면 이 메소드는 최종적인 메소드이므로, 오버라이딩할 수 없는 메소드가 된다. 

 


2. 오버로딩

 

2-1. 생성자 오버로딩

클래스 내에 매개변수를 달리하는 생성자를 여러개 선언하는 것.

단, 매개변수의 타입/개수/순서 중 하나 이상을 다르게 선언해야 한다.

 

2-2. 메소드 오버로딩

클래스 내에 매개변수를 달리하는 같은 이름의 메소드를 여러 개 선언하는 것.

단, 매개변수의 타입/개수/순서 중 하나 이상을 다르게 선언해야 한다.