반응형
목차
개요
카카오테크캠퍼스 백엔드 과정 1주차 관련 공부내용
오버로딩 (Overloading)
오버로딩은 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것
이러한 메서드들은 같은 이름을 가지지만, 매개변수의 개수, 타입 또는 순서가 다르다. 이를 통해 동일한 기능을 수행하지만 서로 다른 입력 인수를 받는 메서드를 정의할 수 있다.
class OverloadingExample {
void print(String s) {
System.out.println(s);
}
void print(int i) {
System.out.println(i);
}
void print(double d) {
System.out.println(d);
}
}
위의 예시에서 print 메서드는 문자열, 정수 및 실수를 각각 출력하는 세 가지 버전이 오버로딩되어 있다.
오버라이딩 (Overriding)
오버라이딩은 하위 클래스에서 상위 클래스의 메서드를 재정의하는 것
오버라이딩을 사용하면 하위 클래스에서 상위 클래스의 메서드를 새로운 구현으로 대체할 수 있다. 이를 통해 다형성을 구현하고, 각 하위 클래스에 맞는 메서드 동작을 제공할 수 있다.
class Animal {
void speak() {
System.out.println("The animal speaks");
}
}
class Dog extends Animal {
@Override
void speak() {
System.out.println("The dog barks");
}
}
class Cat extends Animal {
@Override
void speak() {
System.out.println("The cat meows");
}
}
위의 예시에서 Dog와 Cat 클래스는 Animal 클래스의 speak 메서드를 오버라이딩하여 고유한 동작을 제공한다.
마무리
결론적으로 오버로딩은 일관성 있게 유지하면서 비슷한 동작을 하는 메서드를 다양한 매개변수로 정의하는 것이고, 오버라이딩은 속 관계에서 하위 클래스에서 상위 클래스의 메서드를 재정의하는 것이다.
두 개념은 클래스와 메서드의 관계를 더욱 효율적으로 구현할 수 있게 하고 오버라이딩은 다형성을 구현하는데 사용이 된다.
추가로 파이썬의 경우에는 오버로딩 같은 경우에는 매개변수의 개수나 자료형이 다른 메서드를 여러개 정의할 수 없기 떄문에 가변인자를 사용하여 매개 변수의 갯수에 따른 메소드 처리 방식은 가능하다.
class Calculator:
def add(self, *args):
if len(args) == 2:
return args[0] + args[1]
elif len(args) == 3:
return args[0] + args[1] + args[2]
오버라이딩의 경우에는 자바에서의 @Override 어노테이션처럼 따로 표시는 없이 java와 같은 방식으로 오버라이딩 사용이 가능하다.
'미사용 > KakaoTechCampus' 카테고리의 다른 글
Java기초[7] 자바에서의 상속 구현 (0) | 2023.04.28 |
---|---|
[카테캠] 백엔드 과정 1기 웰컴키트(굿즈) 리뷰 (0) | 2023.04.18 |
Java기초[5] 예제로 알아보는 static 변수, 싱글톤 패턴 (0) | 2023.04.13 |
Java기초[4] this, super와 클래스 상속 (0) | 2023.04.12 |
Java기초[3] 접근제어지시자, 정보은닉 (0) | 2023.04.12 |