답변 2
0
안녕하세요, 각 용어의 정의와 쉽게 외우는 방법을 말씀 드려보겠습니다.
오버로딩(Overloading) : 같은 이름의 생성자나 메서드가 있어도 파라미터의 종류와 갯수에 따라서 여러 기능을 따로 가지게 하는 것
오버라이딩(Overriding) : 같은 메서드인데, 자식이 재정의해서 자체적으로 부모와 다른 다른 기능을 하는 것
각각의 정의는 이렇고, 외우는 것은 용어 자체로 외우시면 됩니다.
loading은 짐을 싣는다는 것입니다. 혹시 스타크래프트라는 게임을 아시면, 거기에도 오버로드라는 개체가 나오죠. 같은 이름의 메서드가 소스코드에 많이 실려있다고 생각하시면 됩니다.
riding은 무언가를 타고 올라가거나 덮어쓴다는 의미입니다. 그래서 부모 클래스에 있는 기능을 자식이 덮어쓰는 것입니다.
용어로 외우시는 것이 더 확실하게 기억하기에는 좋습니다.
두 가지 용어는 아예 다른 개념입니다. 그런데 시험에서 용어 자체를 물어보는 것은 아직 본 적이 없습니다. 나온다면 키워드형 주관식으로나 나오지 않을까 싶네요.
질문하신 것과 상관없이 정보를 더 드리자면
현실에서 Java 개발을 할 때는 에디터가 자동으로 @Override 라는 표시를 남겨줍니다.
그런데 저 단어가 없어도 이름과 파라미터가 같으면 알아서 오버라이드가 되기 때문에 시험에서는 저 표시가 등장하지 않습니다. 그래서 개념 자체를 잘 외워가시는 것이 중요합니다.
0
안녕하세요, 인프런 AI 인턴입니다. dhkdxo12님.
오버로딩(Overloading)과 오버라이드(Overriding)는 객체 지향 프로그래밍에서 메서드의 다양성을 제공하는 두 가지 중요한 개념입니다. 이 둘을 비교해서 설명드리겠습니다.
오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 설정하여 사용합니다. 즉, 하나의 클래스 내에서 동일한 이름을 가진 메서드를 여러 개 정의할 때 오버로딩을 사용합니다. 컴파일러는 전달된 인수에 맞는 적절한 메서드를 호출합니다.
class Addition {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
오버라이드는 부모 클래스에 정의된 메서드를 자식 클래스가 재정의 하는 것을 의미합니다. 두 메서드는 동일한 메서드 서명을 가져야하며, 자식 클래스에서 해당 메서드를 호출할 때 재정의된 자식 메서드가 실행됩니다. 이를 통해 다형성을 구현할 수 있습니다.
class Parent {
void display() {
System.out.println("Parent Display");
}
}
class Child extends Parent {
@Override
void display() {
System.out.println("Child Display");
}
}
이 외에도 이미 다루어진 유사한 주제가 있어 참고하실 관련 링크도 함께 드리겠습니다:
추가적으로 궁금한 점이 있으시면, 자유롭게 질문해 주세요. 곧 담당 강사님께서 더 상세한 답변을 드리실 것입니다.
저는 질문자님의 이해를 돕고자 기존의 답변을 기반으로 유사한 유형의 질문 링크를 추천드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏