반응형
다형성이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말한다.
다형성은 추상 클래스, 인터페이스에서 구현된다.
또한 안드로이드, 스프링 등 자바 기반의 프레임워크에서 응용할 수 있는 객체 지향 프로그램의 중요한 개념이다.
객체 지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징을 가지고 있다.
| 다형성 구현 방법
하나의 클래스를 상속받은 여러 클래스가 있는 경우 각 클래스 마다 같은 이름의 서로 다른 메서드를 정의한다.
상위 클래스 타입으로 선언된 하나의 변수가 여러 인스턴스에 대입되어 다양한 구현이 실행 될 수 있다.
| 다형성 예시
클래스 구현하기
/*다형성*/
/*[실습]예시로 그린 클래스 구현하기*/
package polymorphismTest;
//Animal 클래스 정의
class Animal{
//메서드(멤버 함수) 정의
public void move() {
System.out.println("동물이 움직입니다.");
}
}
//Human 클래스 정의
class Human extends Animal{
//메서드(멤버함수) 정의
public void move() {
System.out.println("사람이 두발로 걷습니다.");
}
}
//Tiger 클래스 정의
class Tiger extends Animal{
//메서드(멤버함수) 정의
@Override//자바는 써도되고 안써도됨
public void move() {
System.out.println("호랑이가 네발로 뜁니다.");
}
}
//Eagle 클래스 정의
class Eagle extends Animal{
//메서드(멤버함수) 정의
public void move() {
System.out.println("독수리가 하늘을 납니다.");
}
}
public class AnimalTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
AnimalTest aTest = new AnimalTest();
//사람 객체를 생성하여 매개 변수로 전달합니다.
aTest.moveAnimal(new Human()); //Animal animal = new Human();
aTest.moveAnimal(new Tiger()); //Animal animal = new Tiger();
aTest.moveAnimal(new Eagle()); //Animal animal = new Eagle();
aTest.moveAnimal(new Animal()); //Animal animal = new Animal();
}
//움직이는 동작을 수행하는 메서드
//Animal -> 매개변수의자료형이 상위클래스이다.
public void moveAnimal(Animal animal){//같은파일안에 있어서 상속받지않아도 자료형으로 사용가능하다.
//재정의된 메서드를 호출
animal.move();
}
}
반응형
'Language > JAVA' 카테고리의 다른 글
[JAVA]인터페이스(interface) 구현과 형변환 (0) | 2020.06.29 |
---|---|
[JAVA] 상속 관계(IS - A 관계, HAS - A 관계) (0) | 2020.06.23 |
[JAVA] 가상 메서드(virtual method) (0) | 2020.06.23 |
[JAVA]업캐스팅(upcasting) (0) | 2020.06.22 |
[JAVA]부모를 부르는 SUPER 예약어 (0) | 2020.06.22 |
댓글