티스토리 뷰

Java

다형성(Polymorphism)

살구르 2017. 1. 11. 15:06

1. 부모 클래스 Type의 참조변수로 자식 클래스 Type의 객체를 가리킬 수 있다.

2. 자식 클래스 Type의 객체를 부모 클래스 Type의 참조변수로 받은 경우, 

   해당 참조변수로는 부모 클래스로부터 받은 속성들만 접근이 가능하다.

3. 만약 해당 참조변수로 부모 클래스에 없는 자식 클래스의 속성으로 접근하기 위해서는 해당 참조변수를 자식 클래스로 형변환이 필요하다.

4. 사실 위와 같이 형변환은 자식 타입을 부모 타입이 받고 있는 상태에서만 가능하다.

 따라서 형변환을 하기 전에 instanceof를 사용해서 객체 타입을 확인해서 형변환을 결정해야 한다.

A instanceof B : A가 B Type의 객체인지 확인

ex)

class Person {

String name;

...

public String getName(){

return name;

}

}

 

class Student extends Person{

String id;

...

public String getId(){

return id;

}

}

 

class Teacher extends Person{

String subject;

...

public String getSubject(){

return subject;

}

}

 

public class Test{

public static void main(String[] args){

Student s = new Student("김슬기","gch7623");

Teacher t = new Teacher("선생님","수학");

 

}

 

public static void info(Person p){

// 다형성으로 인해 부모 Person Type으로 자식 객체를 받을 수 있음 (1)

System.out.println(p.getName());

//System.out.println(p.getId()); // (2) 로 인해 불가능

String msg = "";

if(p instanceof Student)

msg = ((Student)p).getId();

else if(p instanceof Teacher)

msg = ((Teacher)p).getSubject();

System.out.println(msg);

 

}

}

 

 

 

 

'Java' 카테고리의 다른 글

instanceof 연산자  (0) 2017.01.12
String 메서드  (0) 2017.01.12
String 비교  (0) 2017.01.11
문자열의 Call by Value 개념  (0) 2017.01.11
C, Java의 메모리 구조  (0) 2017.01.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함