티스토리 뷰
현실에서 상속은 부모가 자식에게 물려주는 행위를 말한다. JAVA에서도 부모클래스(상위클래스)의 필드와 메소드를 자식클래스(하위클래스)가 상속받아 자신의 것처람 사용할 수 있다.
상속의 방법은 클래스 선언시 다음과 같이 extends를 사용하면된다.
class 자식클래스 extends 부모클래스
- 하나의 부모클래스는 여러개의 자식클래스를 가질수있지만 자식클래스는 하나의 부모클래스만 가질수 있다. (즉 자식클래스는 여러개의 클래스를 상속받지 못한다)
- 자식클래스는 부모클래스가 될수있다. (A클래스를 상속받은 B클래스를 다시 C라는 클래스가 상속받은경우 C는 A의자원까지 사용할 수있다)
- 상속으로 모든 필드와 메소드를 물려받는것이 아니라 private 접근제한을가진 자원은 제외된다.
그렇다면 자바에서 상속은 왜 사용할까?
클래스를 재사용하여 중복을 줄일수 있다. (중복된기능은 상속받음)
코드의 수정시 부모클래스의 코드만 수정만으로 모든자식 코드들까지 수정이되는 효과가 있다.
super
자바에서 자식객체를 생성하면 부모객체가 먼저생성되고 자식객체가 그 다음에 생성된다. 자식객체는 본인의 생성자의 가장 첫 줄에서 Super()메소드로 부모생성자를 호출한다.
- this 자기자신을 지정하듯이 부모는 super로 호출 할 수 있다.
- 부모의 메소드 호출시에는 super.메소드() 로 사용한다.
메소드 재정의(@Override)
자식클래스에서 부모클래스의 메소드를 재정의 하여 사용할 수 있다.
오버라이드 된 메소드를 호출시 부모클래스의 메소드가아닌 자식클래스의 메소드를 호출하게 된다.
- 부모의 메소드와 동일한 형태를 가져야한다 (리턴타입, 메소드이름, 매개변수)
- 접근 제한을 더 강하게 오버라이딩 할 수 없다.
class Parent { //부모클래스
void method1() { System.out.println("부모의 method1"); }
void method2() { System.out.println("부모의 method2"); }
}
class Child extends Parent{ //부모클래스를 상속받은 자식클래스
void method2() { System.out.println("자식의 method2"); }
void method3() { System.out.println("자식의 method3"); }
}
class childExample{
public static void main(String[] args){
Child child = new Child();
child.method1(); // 부모의 method1
child.method2(); // 자식의 method2
child.method3(); // 자식의 method3
}
}
final클래스와 final메소드
final로 저징된 메소드는 자식클래스에서 오버라이드 할 수 없다.
클래스가 final로 저징되있다면 최종클래스라는 위미로 무보클래스가 될수 없어 자식 클래스를 만들 수 없다.
public final class Mamber{ } //상속할 수 없는 final 클래스
'Study ! > JAVA' 카테고리의 다른 글
JAVA 정리 4-3. 추상클래스 (0) | 2018.09.13 |
---|---|
JAVA 정리 4-2. 다형성 (0) | 2018.09.13 |
JAVA 정리 3. 접근 제한자 (public, protected, private) (0) | 2018.09.09 |
JAVA 정리 2. 클래스 (0) | 2018.09.09 |
JAVA 정리 1-2. 2차원 배열과 동적할당 (0) | 2018.09.07 |
댓글