티스토리 뷰

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();


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


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

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

엄청나게 절약가능함!!


반응형
댓글
반응형
최근에 달린 댓글
글 보관함
Total
Today
Yesterday
최근에 올라온 글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31