728x90
다형성(Polymorphism)
- 한 객체가 여러가지 타입을 가질 수 있는 것
- 부모클래스 타입의 참조 변수로 자식클래스 인스턴스 참조
참조변수와 다형성
- 서로 상속관계에 있는 클래스 사이에서만 형변환이 가능
- 메서드 매개변수가 같은 부모클래스라면 부모클래스 타입을 매개변수타입으로 선언가능
- 배열 혹은 자료구조에 부모 클래스로 데이터 타입으로 지정하면 여러자식클래스를 저장가능
- instanceof연산자로 참조변수가 참조하는 인스턴스의 실제타입을 확인하는데 사용 가능
class Person{}
class Baby extends Person{}
Person p1 = new Baby();
//Baby b1 = new Persone(); // X
instanceof
실제 참조하고 있는 인스턴스의 타입확인
class Person{}
class Baby extends Person{}
Person p1 = new Baby();
Person p2 = new Person();
Baby b1 = new Baby();
System.out.println(p1 instanceof Person); //ture
System.out.println(p1 instanceof Baby); //ture
System.out.println(p2 instanceof Person); //ture
System.out.println(p2 instanceof Baby); //false
System.out.println(b1 instanceof Person); //ture
System.out.println(b1 instanceof Baby); //ture
업캐스팅 & 다운캐스팅
class Person{}
class Baby extends Person{}
Person p1 = new Baby(); //업캐스팅
Baby b1 = null;
b1 = (Baby)p1; //다운 캐스팅
배열 혹은 자료구조에 부모 클래스로 데이터 타입으로 지정하면 여러자식클래스를 저장가능
/*
public abstract class zoe {void p();}
public class B extends A{
@Override
void p(){System.out.print("B")};
}
public class C extends A{
@Override
void p(){System.out.print("C")};
}
*/
public class test{
public static void main(String[] args){
A b = new B();
C c = new C();
playA(b);
playA(c);
A a[] = new A[2];
a[0] = new B();
a[1]= new C();
}
private static void playA( A a){
a.p();
}
}
728x90
'3.1 Java_Backend > Java' 카테고리의 다른 글
[java/기초] 인터페이스 (0) | 2024.07.13 |
---|---|
[java/기초] 추상클래스 (0) | 2024.07.13 |
[java/기초] 상속 (0) | 2024.07.10 |
[Java/기초] 클래스와 객체 (0) | 2024.07.09 |
[Java/기초]조건문 ,반복문 (0) | 2024.07.07 |
댓글