반응형
학습 목표
· 다형성이란?
· 임시 다형성 (ad hoc polymorphism)
· 파라미터화한 다형성 (parametric polymorphism)
· 서브타입 다형성 (subtype polymorphism = overriding)
다형성이란?
임시 다형성 (ad hoc polymorphism)
· 같은 이름의 함수를 매개 변수의 개수 또는 타입을 변경하여, 여러 개의 함수가 서로 다르게 행동할 수 있도록 하는 성질
· 오버로딩
· 컴파일 타임 다형성
▶ 예시
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();
}
}
파라미터화한 다형성 (parametric polymorphism)
· 데이터 타입이나 함수를 범용적으로 작성하여, 세부 타입에 상관없이 동일하게 처리할 수 있는 성질
· 제네릭
· 컴파일 타임 다형성
▶ 예시
class Box<T> {
T item;
void setItem(T item) { this.item = item;}
T getItem() {return item;}
}
Box<String> b = new Box<String>();
b.setItem("ABC");
String item1 = b.getItem(); //형변환이 필요없음
서브타입 다형성 (subtype polymorphism)
· 상속받은 상위 클래스의 메소드를 재정의하여 사용할 수 있는 성질
· 오버라이딩
· 런타임 다형성
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://en.wikipedia.org/wiki/Polymorphism_(computer_science)
반응형
'컴퓨터공학' 카테고리의 다른 글
[Computer Science] SGML이란? , <!-- --> 주석의 유래 (0) | 2021.10.14 |
---|---|
MVVM vs MVC, 장점과 단점 (0) | 2021.10.14 |
카오스 엔지니어링과 카오스 몽키 (0) | 2021.10.14 |
[Computer Science] 스핀락(spinlock)의 정의와 사용 이유 (0) | 2021.09.13 |
[Computer Science] 교착상태(deadlock), 발생 조건과 방지 방법 (0) | 2021.09.12 |
댓글