관리 메뉴

nalaolla

다형성, 형변환, 다운캐스팅, 업캐스팅 본문

JAVA/15. Inheritance(상속)

다형성, 형변환, 다운캐스팅, 업캐스팅

날아올라↗↗ 2016. 6. 29. 15:34
728x90
  1. package test.com;
  2.  
  3. public class Test02AAA {
  4.     int a = 111;
  5.     String a2 = "AAA";
  6.    
  7.     public Test02AAA() {
  8.         System.out.println("Test02AAA()...");
  9.     }
  10.    
  11.     public void aaa() {
  12.         System.out.println("aaa()...");
  13.     }
  14. }



  1. package test.com;
  2.  
  3. public /*final*/ class Test02BBB extends Test02AAA {
  4.     int b = 222;
  5.     String b2 = "bbb";
  6.    
  7.     public Test02BBB() {
  8.         System.out.println("Test02BBB()...");
  9.         this.a = 777;
  10.     }
  11.    
  12.     public void bbb() {
  13.         System.out.println("bbb()...");
  14.     }
  15. }



  1. package test.com;
  2.  
  3. public class Test02CCC extends Test02BBB {
  4.     int c = 333;
  5.     String c2 = "ccc";
  6.    
  7.     public Test02CCC() {
  8.         System.out.println("Test02CCC()...");
  9.     }
  10.    
  11.     public void ccc() {
  12.         System.out.println("ccc()...");
  13.     }
  14.  
  15. }



  1. package test.com;
  2.  
  3. public class Test02Main {
  4.  
  5.     public static void main(String[] args) {
  6.         System.out.println("Inheritance...");
  7.        
  8.         //3개의 객체를 각각 생성하고 필드값들을 출력하시오
  9.         //메소드들도 각각 호출하시오..
  10.        
  11.         System.out.println("============= class AAA ==============");
  12.         Test02AAA aa = new Test02AAA();
  13.         aa.a = 11;
  14.         aa.a2 = "aaa";
  15.        
  16.         System.out.println(aa.a);
  17.         System.out.println(aa.a2);
  18.        
  19.         aa.aaa();
  20.        
  21.         System.out.println("============== class BBB =============");
  22.        
  23.         Test02BBB bb = new Test02BBB();
  24.         bb.b = 22;
  25.         bb.b2 = "bbb";
  26.        
  27.         System.out.println(bb.a);
  28.         System.out.println(bb.a2);
  29.         System.out.println(bb.b);
  30.         System.out.println(bb.b2);
  31.         bb.aaa();
  32.         bb.bbb();
  33.        
  34.         System.out.println("============== class CCC =============");
  35.        
  36.         Test02CCC cc = new Test02CCC();
  37.         cc.c = 33;
  38.         cc.c2 = "ccc";
  39.    
  40.         System.out.println(cc.a);
  41.         System.out.println(cc.a2);
  42.         System.out.println(cc.b);
  43.         System.out.println(cc.b2);
  44.         System.out.println(cc.c);
  45.         System.out.println(cc.c2);
  46.         cc.aaa();
  47.         cc.bbb();
  48.         cc.ccc();
  49.        
  50.     }
  51.  
  52. }





  1. package test.com;
  2.  
  3. public class Test02Main2 {
  4.  
  5.     public static void main(String[] args) {
  6.         System.out.println("Inheritance...다형성");
  7.        
  8.         //다형성 : 객체 형변환, 동일타입(상속관계)간에 가능
  9.         //  상속이 전제되어진 경우 부모클래스로 객체생성시 자식의 생성자로 객체생성 가능.
  10.         //  자신의 클래스 멤버들만 접근가능
  11.        
  12.         System.out.println("========== class AAA ===========");
  13.         Test02AAA aa = new Test02BBB();
  14.         aa.a = 11;
  15.         aa.a2 = "aaa";
  16.        
  17.         System.out.println(aa.a);
  18.         System.out.println(aa.a2);
  19.        
  20.         aa.aaa();
  21.        
  22.         aa = new Test02CCC();
  23.         aa.a = 11;
  24.         aa.a2 = "aaa";
  25.        
  26.         System.out.println(aa.a);
  27.         System.out.println(aa.a2);
  28.        
  29.         aa.aaa();
  30.        
  31.         System.out.println("=========== class BBB ==========");
  32.        
  33.         Test02BBB bb = new Test02CCC();
  34.         bb.b = 22;
  35.         bb.b2 = "bbb";
  36.        
  37.         System.out.println(bb.a);
  38.         System.out.println(bb.a2);
  39.         System.out.println(bb.b);
  40.         System.out.println(bb.b2);
  41.         bb.aaa();
  42.         bb.bbb();
  43.        
  44.         System.out.println("=========== class CCC ==========");
  45.        
  46.         Test02CCC cc = new Test02CCC();
  47.         cc.c = 33;
  48.         cc.c2 = "ccc";
  49.    
  50.         System.out.println(cc.a);
  51.         System.out.println(cc.a2);
  52.         System.out.println(cc.b);
  53.         System.out.println(cc.b2);
  54.         System.out.println(cc.c);
  55.         System.out.println(cc.c2);
  56.         cc.aaa();
  57.         cc.bbb();
  58.         cc.ccc();
  59.        
  60.        
  61.        
  62.        
  63.     }
  64.  
  65. }





  1. package test.com;
  2.  
  3. public class Test02Main3 {
  4.  
  5.    
  6.     public static void main(String[] args) {
  7.         System.out.println("Inheritance....형변환");
  8.        
  9.         //형변환 : 다형성과 유사하며,상속을 전제로한다.
  10.        
  11.         Test02Main3 tm = new Test02Main3();
  12.        
  13.         //다운캐스팅
  14.         Test02BBB ta = (Test02BBB) tm.getAAA();
  15.         System.out.println("ta:"+ta);
  16.         System.out.println("ta:"+ta.a);
  17.         System.out.println("ta:"+ta.a2);
  18.         ta.aaa();
  19.        
  20.         //다형성(업케스팅)
  21.         Test02AAA ta2 = tm.getAAA();
  22.        
  23.         System.out.println("================");
  24.         tm.setAAA(new Test02BBB());
  25.         tm.setAAA(new Test02CCC());
  26.     }
  27.  
  28.     private void setAAA(Test02AAA ta) {
  29.         System.out.println(ta);
  30.     }
  31.  
  32.     private Test02AAA getAAA() {
  33. //    Test02AAA ta = new Test02BBB();
  34.         return new Test02BBB();//다형성(업케스팅)
  35. //    return new Test02CCC();//다형성(업케스팅)
  36. //    return new Test02AAA();//사용불가
  37.     }
  38. }




728x90

'JAVA > 15. Inheritance(상속)' 카테고리의 다른 글

상속예제 (member, score, board)  (0) 2016.06.29
추상클래스  (0) 2016.06.29
상속의 정의 및 예제  (0) 2016.06.29