- 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를 상속받음
}