하나의 객체로 다양한 데이터 타입을 가질 수 있어서 다양한 동작을 수행할 수 있게 합니다.
다형성의 세 가지 형태
1. 메서드 오버로딩 : 같은 이름의 메서드를 여러 개 정의하고, 매개변수의 타입, 개수, 순서를 다르게 하여 다양한 입력에 대응할 수 있도록 하는 것입니다.
public class Calculator {
// 정수 두 개를 더하는 메서드
int add(int a, int b) {
return a + b;
}
// 실수 두 개를 더하는 메서드
double add(double a, double b) {
return a + b;
}
// 문자열 두 개를 합치는 메서드
String add(String a, String b) {
return a + b;
}
}
2. 메서드 오버라이딩 : 부모 클래스가 정의한 메서드를 자식 클래스에서 재정의하여 사용하는 것입니다. 동일한 메서드 이름을 가진 서로 다른 클래스의 객체가 각자의 클래스에 맞게 다른 동작을 수행할 수 있습니다.
class Parent {
void showName() {
System.out.println("parent name");
}
}
class Child extends Parent {
@Override
void showName() {
System.out.println("child name");
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.showName();
}
}
3. 객체의 다형성 : 부모 클래스 타입의 참조 변수를 사용하여 여러 하위 클래스의 객체를 참조하는 것입니다.
class Parent {
void showName() {
System.out.println("parent name");
}
}
class ChildA extends Parent {
@Override
void showName() {
System.out.println("childA name");
}
}
class ChildB extends Parent {
@Override
void showName() {
System.out.println("childB name");
}
}
public class Main {
public static void main(String[] args) {
Parent ca = new ChildA();
ca.showName();
Parent cb = new ChildB();
cb.showName();
}
}
Parent 클래스에서 showName이라는 메서드가 자식 클래스에서 오버라이딩되어서 다양한 내용으로 출력되고 있습니다.
실제 객체의 타입에 따라서 오버라이딩된 메서드가 호출됩니다.
'JAVA > 객체 지향 프로그래밍' 카테고리의 다른 글
[JAVA] 추상화 클래스 (0) | 2023.08.19 |
---|---|
[JAVA] 업캐스팅 & 다운캐스팅 (0) | 2023.08.19 |
[JAVA] 메서드 오버라이딩 조건 (0) | 2023.08.18 |
[JAVA] 상속 super 키워드와 super() 메서드 (0) | 2023.08.18 |
[JAVA] 상속의 정의와 개념 (0) | 2023.08.16 |