본문 바로가기
3.1 SpringBoot/Java

[java/기초] 다형성

by Dohi._. 2024. 7. 11.
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 SpringBoot > 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

댓글