상속
출처 : 자바 프로그래밍 입문(인프런)
- 필요성
기존의 검증된 class를 이용해서 빠르고 쉽게 새로운 class를 만들 수 있다.
ex. extends를 이용해서 상속한다
package testPjt;
public class ChildClass extends ParentClass{
public ChildClass() {
System.out.println("-- ChildClass constructor --");
}
public childFun() {
System.out.println(" -- childFunc() --");
}
}
package testPjt;
public class ParentClass {
public ParentClass() {
System.out.println("--- ParentClass Constructor ---")
}
public void parentFun() {
System.out.println("--- parentFunc ---")
}
}
ChildClass child = new ChildClass(); -> ParentClass의 객체먼저 생긴다. 부모 클래스가 먼저 있어야 상속 받을 수 있어.
child.parentFun();
child.childFun();
- 특징
1) 자바는 단일 상속만 가능, 다중 상속은 지원하지 않는다.
2) 자식 클래스는 부모 클래스의 모든 자원을 사용할 수 있지만 private 접근자의 속성과 메서드는 사용할 수 없다.
- 메서드 오버라이드
부모 클래스의 기능을 자식 클래스에서 재정의해서 사용한다.
기존 클래스를 확장, 업데이트 할 수 있다.
@override 위에 써주고 쓴다.
- 클래스도 하나의 자료형이다.
클래스의 이름은 데이터 타입으로도 이용된다.
Childclass child = new ChildClass(); 뿐만 아니라
ParentClass child = new ChildClass()라고 만들어도 된다.
상위 클래스 데이터 타입이어도 된다. childClass는 상위 클래스를 상속받은 것이기 때문.
배열의 요소는 객체 타입이 다 동일해야 한다.
이때, 부모 클래스로 데이터 타입을 만들면(new할 때는 각각 다른 자식 클래스여도) 같은 배열 안에 넣을 수 있다.
모든 클래스의 최상위 클래스는 Object Class, ObjectList class가 있다.
데이터 타입을 모두 Object로 통일시키면 배열에 넣을 수 있다.
this : 현재 내가 있는 객체
super : 상위 클래스로 올라가라
ChildClass 내에서 this.속성, super.속성으로 각각의 속성을 가리킬 수 있다.