Inheritance(상속)의 의미

상위 객체에 있는 내용을 하위 객체가 끌어다 써서 확장시킨다는 뜻으로 사용하고 있다. 그래서 자바의 상속 키워드를 보면 extends 를 쓰면 상속 기능이 활성화 된다. 상위 객체를 부르는 말로 부모 클래스, 슈퍼 클래스 등이 있고 하위 객체를 부르는 말로 자식 클래스, 서브 클래스 등이 있다.

/*     extends 키워드 사용 예제     */
public class Parent{}
public class Child extends Parent{}

접근 지정자(접근 제한자)

[접근 지정자 제한 범위, 하얀색 칸이 해당 접근 지정자가 부여하는 권한]

[접근 지정자 제한 범위, 하얀색 칸이 해당 접근 지정자가 부여하는 권한]

Method Override

class Parent
{
	protected void method() throws IOException{
		System.out.println("Parent method");
	}
}

class Child extends Parent{
	protected void method() throws IOException{
		System.out.println("Child method");
	}
	/*     부모의 메소드 접근 지정자는 protected라서
				 보다 좁은 범위인 private를 사용하여 Override 불가  */
	// private void method(){
	// 	System.out.println("Child method");
	// }
	/*     부모의 메소드의 예외인 IOException 보다 큰 예외인
				 Exception이기 때문에 Override 불가  */
	// private void method() thorws Excpetion{
	// 	System.out.println("Child method");
	// }
	public void method() throws IOException{
		System.out.println("Child method");
	}
}

super.

class Parent
{
	protected void method() throws IOException{
		System.out.println("Parent method");
	}
}

class Child extends Parent{
	protected void method() throws IOException{
		super.method();
	}

}

Super()

class Creature {
    ///// 필드 선언 생략 /////
		Creature() {}
    Creature(int life) {
      this(life, 0, ""); 
        /////// ...생략...  ///////    
		}
    Creature(int life, int sleep) {
      this(life, sleep, ""); 
    }
    
    Creature(int life, int sleep, String name) {
        /////// ...생략...  ///////
    }
    
    public void method() {}
}

class Bird extends Creature{
		int flyTime;
		Bird(int life, int sleep, String name, int flyTime){
				super(life, sleep, name); // 부모 객체에 있는 필드 초기화
				this.flyTime = flyTime;
		}

/*     아래와 같은 방식으로 사용 못함     */
	//public void method() {
	//	super().method();
	//}
	//public void method1() {
	//	Creature creature = super();
	//}
			
}