본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

ex27) java_oop

by 청춘만화 2012. 2. 24.
 
 //형변환(강제/자동)은 상속관계(부모<->자식)에서만 가능하다.  //형제끼린 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

댓글