객체 지향 프로그래밍의 특징 중 다형성(Polymorphism)에는 대표적으로 오버로딩과 오버라이딩이 있습니다.
오버로딩
public class OverloadingExample {
public static void main(String[] args) {
int a = 10;
int b = 20;
double c = 3.14;
int result1 = add(a, b);
double result2 = add(a, b, c);
System.out.println("result1 = " + result1);
System.out.println("result2 = " + result2);
}
// int 타입 두 개를 더하는 메서드
public static int add(int x, int y) {
return x + y;
}
// int 타입 두 개와 double 타입 하나를 더하는 메서드
public static double add(int x, int y, double z) {
return x + y + z;
}
}
-하나의 클래스 내에서, 같은 이름의 메소드를 여러 개 정의하는 것을 말합니다.
-메서드의 이름은 같지만, 매개변수의 개수나 데이터 타입이 다른 여러 메서드를 구현할 수 있습니다.
오버라이딩
public class OverridingExample {
public static void main(String[] args) {
Animal animal = new Animal();
Dog dog = new Dog();
Cat cat = new Cat();
animal.makeSound(); // 동물 울음소리
dog.makeSound(); // 멍멍
cat.makeSound(); // 야옹
}
}
class Animal {
public void makeSound() {
System.out.println("동물 울음소리");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("멍멍");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("야옹");
}
}
-상위 클래스에서 이미 정의된 메서드를 하위 클래스에서 새로운 기능으로 재정의(추가 또는 수정)하는 것입니다.
-오버라이딩을 하기 위해서는, 상위 클래스와 하위 클래스에서 메서드 이름, 매개 변수의 개수와 데이터 타입, 그리고 반환 값의 데이터 타입이 모두 동일해야 합니다.
-위 코드는 Animal 클래스의 makeSound 메서드를 Dog 클래스와 Cat 클래스에서 각각 재정의하여 오버라이딩을 구현한 예시입니다. Animal 타입으로 생성한 객체에서 makeSound 메서드를 호출하면, 해당 객체의 클래스에 맞게 오버라이딩된 메서드가 실행됩니다.
'java(자바)' 카테고리의 다른 글
[java(자바)] 상속(extends) vs 구현(implements) _디버깅의 눈물 (0) | 2023.03.22 |
---|---|
[java(자바)] 추상 클래스와 인터페이스의 차이 _디버깅의 눈물 (0) | 2023.03.21 |
[java(자바)] 클래스, 객체, 인스턴스란? _디버깅의 눈물 (0) | 2023.03.19 |
[java(자바)] 객체 지향의 주요 특징-캡슐화, 상속, 다형성, 추상화 _디버깅의 눈물 (0) | 2023.03.18 |
[java(자바)] 자바의 메모리 영역 5가지 _디버깅의 눈물 (0) | 2023.03.18 |