반응형
다형성(Polymorphism)이란?
단어의 형태소를 분석해보면 poly(많은), morphs(형태)라는 뜻이다.
즉, 형태가 다양하다는 의미다.
위키피디아에서는 다형성을 다음과 같이 정의한다.
프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소(상수, 변수, 식 , 오브젝트, 함수 등)들이 다양한 자료형(type)에 속하는 것이 허가되는 성질
자바에서 다형성은 대표적으로 두 가지 유형으로 나눌 수 있다.
1. 컴파일 타입 다형성
2. 런타임 타입 다형성
컴파일 타입 다형성 - 오버로딩
같은 이름의 메소드를 매개 변수의 개수 또는 타입을 변경하여 여러 개 사용
예시코드
class Animal{
public void move(){
System.out.println("동물이 움직입니다.");
}
}
class Human extends Animal{
public void move(){
System.out.println("사람이 두 발로 뜁니다.");
}
}
class Tiger extends Animal{
public void move(){
System.out.println("호랑이가 네 발로 뜁니다.");
}
}
class Eagle extends Animal{
public void move(){
System.out.println("독수리가 날아갑니다.");
}
}
class AnimalTest
{
public static void main (String[] args) throws java.lang.Exception
{
Animal human = new Human();
Animal tiger = new Tiger();
Animal eagle = new Eagle();
AnimalTest test = new AnimalTest();
test.moveAnimal(human);
test.moveAnimal(tiger);
test.moveAnimal(eagle);
}
public void moveAnimal(Animal animal){
animal.move();
}
}
결과
런타임 타입 다형성 - 오버라이딩
상속받은 부모 클래스의 메소드를 재정의하여 사용
public class Computer {
public void getInfo() {
System.out.println("컴퓨터입니다.");
}
}
public class Mac extends Computer{
@Override
public void getInfo() {
System.out.println("맥 컴퓨터입니다.");
}
}
public class Main {
public static void main(String[] args){
Mac myComputer = new Mac();
myComputer.getInfo();
}
}
결과
다형성을 사용함으로써 갖는 장점은?
- 같은 기능의 자료형만 다른 메서드를 서로 다른 이름으로 기억하지 않아도 된다. (오버로딩)
- 부모 클래스의 정의된 메소드가 자식 클래스에 맞지 않는 경우, 부모 클래스의 메소드를 수정하지 않고 자식 클래스에 특정한 구현을 제공할 수 있다. (오버라이딩)
- 즉, 유지보수에 유리하다.
출처
https://www.geeksforgeeks.org/polymorphism-in-java
패스트캠퍼스 - Java 객체지향 프로그래밍
반응형
'자바' 카테고리의 다른 글
[Java] 자바 데이터 타입(자료형), 변수 그리고 배열 (0) | 2021.08.18 |
---|---|
[Java] 가비지 컬렉션(GC)이란? (0) | 2021.08.17 |
[Java] 자바 상속의 특징 - extends, super, 오버라이딩, instanceof, 추상 클래스와 메소드, final (0) | 2021.08.12 |
[Java] 접근 제한자(제어자) - public, protected, default, private (0) | 2021.08.12 |
[Java] 자바의 패키지란? - package, import, 클래스패스, -classpath 옵션, CLASSPATH 환경변수, 접근지시자 (2) | 2021.08.12 |
댓글