본문 바로가기

웹 프로그래밍/Spring Framework

[JAVA] 상속(Extends)

상속
 부모 클래스의 정보를 자식클래스가 그대로 상속받는 것을 말한다. 따라서 자식은 부모클래스의 정보를 상속받았으므로 자식클래스에서 부모클래스의 메소드를 호출하는 것이 가능하다는 것이다. (이외로 변수 등과 같은 모든 정보를 그대로 받는다. 이는 코드의 생산성을 증가시킨다.)

예제

class Super{
 int x = 90;
 void superMethod(){
  System.out.println("superMethod");
 }
}

class Sub extends Super {
 int y = 10;
 void subMethod(){
  System.out.println("subMethod");
 }
}

class SubSub extends Sub {
 int z = 30;
 void subSubMethod(){
  System.out.println("subSubMethod");
 }
}

public class ExtendsTest2 {
 public static void main(String[] args){
  SubSub ss = new SubSub();
  System.out.println(ss.x + ss.y + ss.z);
  ss.superMethod();
  ss.subMethod();
  ss.subSubMethod();
  ss.x = 40;
  System.out.println(Super.x);
 }
}

결과

130
superMethod
subMethod
subSubMethod
40

해설
 Super클래스를 Sub클래스가 상속받고 Sub클래스를 SubSub클래스가 상속받았으므로 SubSub클래스는 Super 클래스와 Sub클래스의 모든 메소드와 변수를 사용할 수 있다.

궁금증
 그럼 슈퍼클래스에있는 정적변수의 값을 상속받은 자식클래스에서 수정이 가능할까?
 답은 가능하다. Super클래스를 정의했을 때부터 이미 Class Area에는 정적변수인 x가 존재한다. 따라서 Super 클래스로 객체를 만들지 않아도 상속받은 자식클래스에서 x에 대한 접근이 가능하다.