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();
}
}