Back-end/Java

(JAVA) 다형성

이안_ian 2018. 9. 21. 20:54
반응형

다형성


여러 개의 형태(자료형)를 갖는다는 의미, 객체지향 프로그래밍의 3대 특징 중 하나다.

상속을 이용한 기술로, 자식 객체를 부모객체의 타입의 변수로 다룰 수 있는 기술


부모는 자식을 품을 수 있지만 자식은 부모를 품지않는다고 생각하면 쉽다.

부모는 자식 클래스의 자료형을 다 수용할 수 있으며, 여러가지의 자식 자료형을 포함하고 있다가

필요한 시점에 맞춰서 자료형을 바꿔 사용을 하는 기술이다.


ex) Person - 부모클래스

Employee, Professor - 자식클래스


Person p = new Person();

일땐 Person의 메소드와 변수 사용가능

Person p2 = new Student();

Person p3 = new Employee(); or p = new Employee(); 



평소에는 Person형으로 있는 Student와 Employee의 메소드와 변수들은 보이지 않는다. 

그래서 이러한 값을 사용하기 위해서는 형변환 후 사용 가능

((Student)p).setName(); 형식으로 전체를 형변환 해주고 나면 접근 가능하다.


동적바인딩


Product의 toString(메소드)을 Employee에서도 오버라이딩으로 toString(메소드)하면 

p = new Employee();를 하고 System.out.print(p)를 하면 Employee의 toString이 출력이 된다. 

이를 자동으로 해주는게 동적바인딩이다. 최신으로 넣어준 클래스의 메소드를 출력한다.


instanceof


현재 참조형 변수가 어떤 클래스 형의 객체 주소를 참조하고 있는지 확인할 때 사용, 클래스 타입이 맞으면 true, 아니면 false값을 반환

표현식)

 if(레퍼런스 instanceof 클래스명)


 if(p instanceof Student)

System.out.println("Student가 있다!!");

이런식으로 참 거짓을 판별 가능


배열로 다형성 구성하기


Car[] carr = new Car[5];    //Car부모 클래스


carr[0]=new Sonata();

carr[1]=new Avante();

carr[2]=new Spark();

carr[3]=new Morning();


이런식으로 다양한 클래스는 넣을 수 있다.


간단하게 정의해서 다형성이란 하나의 부모클래스에 다른 여러 자식클래스(자료형)를 집어 넣고 하나의 클래스에서 

여러가지 데이터형태를 관리하는 것. 카멜레온처럼 그때그때 모습이 바꾸어 사용한다. 이것으로 코드 수를 

엄청나게 절약가능함!!


반응형