//형변환(강제/자동)은 상속관계(부모<->자식)에서만 가능하다. //형제끼린 X
//< Human>
class Human {
String state = "인간";
public void state() {
System.out.println( "인간이다" );
}
}
//< Woman>
class Woman extends Human {
String name = "gemini";
// name변수의 값을 리턴
public String getName() {
return name;
}
// 상위 클래스의 method overriding
public void state() {
System.out.println( name + "은 여자이다" );
}
}
//< Man>
class Man extends Human {
String name = "johnharu";
// name변수의 값을 리턴
public String getName() {
return name;
}
// 상위 클래스의 method overriding
public void state() {
System.out.println( name + "는 남자다" );
}
}
//< ClassCast>
public class ClassCast {
public static void main( String[] args ) {
/*
//:오류:JVM이 자동으로 디폴트 에러 메시징
// Woman객체 생성
Woman gemini = new Woman();
// Polymorphism
Human wo = new Woman();
// name을 리턴시키는 메소드를 호출
System.out.println( gemini.getName() );
String wName = ((Woman)wo).getName();
System.out.println( wName );
// 부모 클래스를 자식 클래스로 casting
//Man john = (Man)gemini;
Man john = (Man)wo;
// 이름을 출력
String mName = john.getName();
System.out.println( mName );
**/
// Woman객체 생성
Woman gemini = new Woman();
// Polymorphism
Human wo = new Woman();
// name을 리턴시키는 메소드를 호출
System.out.println( gemini.getName() );
String wName = ((Woman)wo).getName();
System.out.println( wName );
// 부모 클래스를 자식 클래스로 casting
//Man john = (Man)gemini;
try {
Man john = (Man)wo;
// 이름을 출력
String mName = john.getName();
System.out.println( mName );
} catch ( ClassCastException cc ) {
System.out.println( "Message1 : " + cc.getMessage() );
cc.printStackTrace();
System.out.println( "Message2 : " + cc.toString() );
} finally {
System.out.println( "남자는 여자가 될 수 없다" );
}
}
}
'새로워지기 > 서른의 생활코딩' 카테고리의 다른 글
ex29) java_oop (0) | 2012.02.24 |
---|---|
ex28) java_oop (0) | 2012.02.24 |
ex26) java_oop (0) | 2012.02.24 |
ex25) java_oop (0) | 2012.02.23 |
ex24) java_oop (0) | 2012.02.23 |
댓글