티스토리 뷰
다형성
여러 개의 형태(자료형)를 갖는다는 의미, 객체지향 프로그래밍의 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();
이런식으로 다양한 클래스는 넣을 수 있다.
간단하게 정의해서 다형성이란 하나의 부모클래스에 다른 여러 자식클래스(자료형)를 집어 넣고 하나의 클래스에서
여러가지 데이터형태를 관리하는 것. 카멜레온처럼 그때그때 모습이 바꾸어 사용한다. 이것으로 코드 수를
엄청나게 절약가능함!!
'Back-end > Java' 카테고리의 다른 글
(JAVA) 자바의 GUI 스윙!! (0) | 2018.10.02 |
---|---|
(JAVA) Comparable, Comparator (0) | 2018.09.27 |
(JAVA) 여러가지 형변환 (String->int, String->char, char->int), 소수점 밑부분 자르기 (0) | 2018.09.14 |
(JAVA) Date(), Calendar(), GregorianCalendar() (0) | 2018.09.14 |
(JAVA) 문자열 나누는 Split(), subString (0) | 2018.09.12 |