상위 객체에 있는 내용을 하위 객체가 끌어다 써서 확장시킨다는 뜻으로 사용하고 있다. 그래서 자바의 상속 키워드를 보면 extends 를 쓰면 상속 기능이 활성화 된다. 상위 객체를 부르는 말로 부모 클래스, 슈퍼 클래스 등이 있고 하위 객체를 부르는 말로 자식 클래스, 서브 클래스 등이 있다.
/* extends 키워드 사용 예제 */
public class Parent{}
public class Child extends Parent{}
![[접근 지정자 제한 범위, 하얀색 칸이 해당 접근 지정자가 부여하는 권한]](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a5415b08-d641-4910-8312-6c2a1053f841/_-1.png)
[접근 지정자 제한 범위, 하얀색 칸이 해당 접근 지정자가 부여하는 권한]
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");
}
}
class Parent
{
protected void method() throws IOException{
System.out.println("Parent method");
}
}
class Child extends Parent{
protected void method() throws IOException{
super.method();
}
}
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();
//}
}