자바[Java] 상속 이란?

반응형

상속(Inheritance)은 객체 지향 프로그램

 

  • A(상위 부모 클래스)의 멤버를 B(하위or 파생 자식 클래스)가 사용할 수 있다.
    따라서 B클래스는 A클래스의 필드와, 메소드를 사용할 수 있다.
  • 상속의 효과는 상위(부모) 클래스를 재사용해 하위or파생(자식)클래스를 빠르게 개발할수있다.
  • 반복되는 코드는 줄일수 있으며, 유지 보수의 편리성, 객체의 다형성 구현이 가능하다.
  • 상속대상에 제한된 내용은 private접근을 갖는 필드와 메소드는 제외 된다.
  • 또다른 제한: 상위(부모)클래스가 다른 패키지에 있을경우, default(디폴트)접근을 갖는 필드와 메소드도 제외된다.

상위 생성자를 호출(super(…))

 

파생, 하위 객체를 생성하면 상위 객체부터 생성이 된다.

상위(부모)클래스가 없을경우, 파생or하위(자식)클래스에서 상위(부모)클래스를 생성하고 호출하면 오류가 발생한다

파생or하위(자식)클래스 생성자의 첫 줄에 반드시 호출하는것이 위치한다.

 

예시. public Baby extends mom{ // 상위 클래스 지정

// 생성자  
public Baby(String 000, int 000){  
super(000, 000);  // 상위(부모) 클래스의 000과 000을 호출  
}  
//메소드 ...  
}

 

메소드의 재정의(@Override)오버라이딩

@Override의 효과는 상위(부모) 메소드는 숨겨지는 효과가 발생하고, 파생or하위(자식) 메소드에서

재정의된 메소드만 호출된다.

파생or하위(자식) 클래스에서 수정되기 전 상위(부모) 메소드 호출 super 사용할수있다.

 

final 클래스와 final 메소드

final 필드는 수정불가 필드이며, final 클래스는 상위(부모) 클래스로 사용불가

final 메소드도 역시 하위or파생(자식)이 재정의 할수도 없는 메소드이다.

한마디로 @Override이 불가한 final 메소드이다.

public class mom{  
public int x;  
  
public void test(){  //일반 메소드  
x += 1;  
}  
  
public final void test1(){  //final 메소드  
x=0;  
}  
}

public class Baby extends mom {  
  
@Override  // 사용 가능  
public void test(){  
x += 10;  
}  
  
@Override  //사용 불가  
public void test1(){  
x = 5;  
}  
  
}
반응형