Developer Factory

27. JAVA 상속 본문

Developer/Java

27. JAVA 상속

Jeremy.Park 2014. 7. 3. 00:21
* 상속
 -> 기존 코드를 재사용
1] Specialization : 위에서 아래로 상속

          Car 

 Sedan     Truck
 
2] Generalization : [A] - [B] 공통적인 내용을 뽑아서 슈퍼클래스를 정의하는 것 









public class Episode01 {
       static class Car {
             String       name = "자동차";
             int          cc = 1998;
      
             public Car (){
                   // super(); // 자동으로 붙는다.즉, Object의 생성자 호출.
                   System. out.println( "Car()...");
                   name = "자동차하하" ;
                   cc = 2000;
            }
            
             public void start(){
                   System. out.println( "출발한다.");
            }           
             public void run() {
                   System. out.println( "가속한다.");
            }           
             public void stop(){
                   System. out.println( "멈춘다.");
            }           
      }

       static class Truck extends Car {
             int weight = 15000;           
            
             public Truck (){
                   /* super 클래스의 생성자 호출
                   * - 이 문장 이전에 다른 명령이 와서는 안된다.
                   */
                   //int i = 0; // 수퍼 클래스의 생성자 호출 전에 오면 오류!
                   super();   // 생략하면 자동의로 붙는다.  모든 생성자는 반드시 있다.
                   System. out.println( "Truck()...");
                   weight = 10000;
            }
            
             public void dump(){
                   System. out.println( "집을 내리다." );
                   weight = 0;
            }
      }
      
       public static void main( String[] args) {            
             /*    new Truck()
             * instance 생성 단계
             * 1) super 클래스를 찾아서 로딩 -> Car.class
             * 2) 생성 하려는 클래슬 찾아서 로딩 -> Truck.class
             * 3) super 클래스의 인스턴스 변수 준비 -> name, cc
             * 4) 해당 클래스의 인스턴스 변수 준비 -> weight
             * 5) super의 인스턴스 변수 초기화 문장을 수행 name="자동차", cc=1998
             *          해당 클래스의 인스턴스 변수 초기화 문장 수행      weight=15000
             * 6) Track() 생성자 호출     -> super()클래스의 Car()호출 -> super()클래스의 Object()호출
             *    -> 실행 => Car 실행(초기화실행) -> Truck 실행(초기화실행) -> 완료!.
             */
            
             Truck t = new Truck();

             System. out.println( t. name);
             System. out.println( t. cc);
             System. out.println( t. weight);
             System. out.println( "완료!");
            
             t.dump();
             t.start();
             t.run();
            
      }
}


'Developer > Java' 카테고리의 다른 글

29. JAVA 객체간의 관계 with UML  (0) 2014.07.03
28. JAVA AWT의 hierarchy  (0) 2014.07.03
26. JAVA JavaWindow Programming  (0) 2014.07.03
25. JAVA Buffer  (0) 2014.07.03
24. JAVA binary 스트림과 character 스트림의 비교  (0) 2014.07.03