티스토리 뷰
둘은 이름이 비슷하지만 기능은 전혀 다른 걸 의미한다.
1. 오버로딩은 메서드의 이름은 같지만 매개변수를 다르게 받는 것을 뜻한다.
public void data(name, byte) {
}
public void data(name, byte, owner) {
}
public void data(name, byte, owner, type) {
}
따라서 오버로딩은 코드의 재사용성과 관리에 용이하다 할 수 있다.
2. 그에 비해서 오버라이딩은 부모의 코드를 상속, 재정의하여 사용하는 것을 말한다.
//부모
public class parent {
public void method() {
system.out.println("부모 메서드");
}
}
@Override
public void child extends parent {
public void method() {
system.out.println("자식 메서드");
}
}
오버라이딩은 부모를 상속하기 때문에 당연히 접근이 가능해야한다. 예를 들어 모든 클래스가 접근이 불가능한 private로 변수타입을 지정하는 경우에는 따로 빼내어 지정하는 getter/setter 등이 아니면 자식이라 해도 접근이 불가능해진다. 따라서 다음의 방법을 통해서 해결해야 한다.
default : 아래의 3가지를 붙이지 않으면 기본으로 설정된다. 이 클래스(.class)가 있는 패키지(package)내의 클래스들만 접근 가능하다.
public : 어느 클래스든 접근 가능하다.
private : 해당 클래스 내에서만 접근 가능하다. 외부에서 접근이 불가하다.
protected : 동일 패키지(package)와 해당 클래스를 상속한 자식 클래스와는 public과 같으며 그렇지 않은 외부와는 private와 같다.
이를 접근 제한자, 접근 지정자라고 한다.
'코딩 공부 > 자바' 카테고리의 다른 글
레거시 스프링 제어 역전 기능 (0) | 2023.09.07 |
---|---|
[org.springframework.web.context.ContextLoaderListener]의 애플리케이션 리스너를 설정하는 중 오류 발생 - 오류 해결 과정 (0) | 2023.08.22 |
스프링의 빈(Bean)은 무엇인가 (0) | 2023.08.18 |
스프링 레거시 인터셉터 locale 오류와 싸움을 했다. (0) | 2023.08.18 |