2013년 6월 27일 목요일

(130627) 4일차 SuperTest.java (상속 테스트)

 - Inheritance (상속)
 : 부모 클래스(super class) 객체의 속성과 행동을 물려 받는 것.
 : 생성자를  제외한 모든  것을 상속 받는다.
 : 부모(super class)의 private 요소에는 접근할 수 없다.
 : 부모 클래스의 메소드와 데이타에 별도의 선언 없이 접근 가능.
 : 자바는 다중 상속을 허용하지 않고, 단일 상속만 허용한다.
 : 모든 클래스는 특별히 extends라는 키워드를 사용하지 않으면 컴파일러가 자동으로 Object 클래스를 상속받게 되어있다. (Object 클래스가 모든 클래스의 최상위이기 때문에) - extends Object

 - "is a" Relationship
 : "A is a B",  "A는 B이다" 
 : "A is a B"가 성립 한다면 "A가 B를 상속 받았다."라고 할 수 있다.
 : "A is a B"가 성립 한다면 A객체는 B객체가 가지고 있는 모든 특징(Data, Method)을 가지고 있다는 의미


 - 소스
public class SuperTest {
// Object 클래스를 기본으로 상속받음

int wheelnum = 4;
String carName = "그란져";

public void girl(){
System.out.println(carName);
}

private void sista(){

}

public void sista2(){

}

public final void sista3(){
System.out.println("Hi");
}

public static void main(String[] args) {

}
}

class SubTest extends SuperTest
// SuperTest를 상속받음 (private를 제외하고 모든 기능을 상속받음)

public void start(){
// SuperTest st = new SuperTest();
// st.girl();
System.out.println(carName);
// this.sista(); // 부모 클래스에 private가 붙어있으면 없는것으로 인식
this.sista2();
this.sista3(); // 존재하고있으며 갖다쓸 수 있지만 오버라이딩이 되지 않는다.
}
}

class B extends SubTest{
// SubTest가 Object 클래스와 SuperTest를 상속받음
// 그러한 SubTest를 상속받았으므로 Object 클래스와 SuperTest를 상속받음

}