반응형
상속(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;
}
}
반응형
'Java > Java' 카테고리의 다른 글
자바[Java] 추상클래스(abstract)란? 개념정리 (0) | 2021.10.14 |
---|---|
자바[Java] 타입변환과 다형성에 대한 개념 정리 (0) | 2021.10.13 |
자바[Java] Getter와 Setter 메소드란? (0) | 2021.10.12 |
자바[Java] 상수 final란 (0) | 2021.10.12 |
자바[Java] 메소드란? (0) | 2021.10.08 |