모눈종이에 사각사각

[Java] 오버로딩(Overloading) vs 오버라이딩(Overriding) 본문

Java

[Java] 오버로딩(Overloading) vs 오버라이딩(Overriding)

모눈종이씨 2022. 7. 5. 13:16

"오버로딩과 오버라이딩의 차이가 무엇이죠?"

라고 물어오면 순간 당황한다.

 

분명히 알고 있는데, 내가 알고 있는 이 기능이 오버로딩인지, 오버라이딩인지 헷갈린다.

 

이 포스팅을 계기로 딱 기억하자.

 

오버로딩 -> 같은 이름, 다른 매개변수
오버라이딩 -> 상속, 재정의

 

🍀 오버 로딩

자바의 한 클래스 내에 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의하는 것이다.

 

매개변수가 다르면 이름이 같아도 서로 다른 메소드가 된다.

반면에 매개변수는 같지만 리턴타입이 다르면 오류가 발생한다.

 

또한 접근 제어자도 자유롭게 지정할 수 있지만, 접근 제어자만 다르다고 해서 오버로딩이 가능하지 않다.

 

상속의 관계에서도 오버로딩을 사용할 수 있다

 

오버로딩을 사용하면 어떤 점이 좋을까?

첫째, 같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있다.
둘째, 메소드의 이름을 절약할 수 있다.

 

🍀 오버 라이딩

부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것이다.

 

자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.

 

오버 라이딩 시 몇 가지 주의해야할 점이 있다.

 

1. 자식 클래스에서 오버라이딩하는 메소드의 접근 제어자는 부모 클래스보다 더 좁게 설정할 수 없다.

2. 예외(Exception)는 부모 클래스의 메소드 보다 많이 선언할 수 없다.

3. static메소드를 인스턴스의 메소드로 또는 그 반대로 바꿀 수 없다.

 


참고사이트

https://hyoje420.tistory.com/14

https://www.opentutorials.org/course/1223/6090

'Java' 카테고리의 다른 글

[Java] @Override Annotation  (0) 2022.10.29
[Java] List 중복 제거하기  (0) 2022.10.28
[Java] String클래스와 substring()  (0) 2022.10.28
[Java] List.of(), Arrays.asList()  (0) 2022.10.28
[Java] static import  (0) 2022.06.01
Comments