상속
상속이란?
- 부모 클래스가 자신의 필드나 메서드를 자식 클래스에게 물려주어 자식 클래스가 부모 필드 및 메서드를 사용하는 것
사용법
class 자식클래스명 extends 부모 클래스 {
필드
메서드
생성자(){
super() // 부모 생성자 호출
}
@override
부모 메서드 재정의
}
- final 클래스는 상속 할 수 없다
• 매개변수의 다형성
메서드(부모클래스명 클래스변수) {
}
- 위와같은 메서드 선언 시 부모클래스의 자식클래스를 사용할 수 있다.
• 자동 타입 변환
- 부모클래스 변수 = new 자식클래스()
- 자식 타입이 부모 타입으로 자동 변환하면, 부모 타입에 선언된 필드와 메소드만 사용 가능하다.
• 강제 타입 변환
- 부모클래스 변수 = new 자식클래스 한 후, => 자식클래스 변수 = (자식클래스) 부모클래스타입;
- 자식타입이 부모 타입으로 자동 변환한 후, 다시 자식 타입으로 변환할때만 사용 가능
- 부모 타입의 변수가 부모 객체를 참조 할 경우 자식 타입으로 변환할 수 없다.
- 이때 instanceof 연산자를 사용하여 참조 객체가 부모객체인지 자식 객체인지 확인할 수 있다.
추상 클래스
- 실제 클래스가 공통적으로 가져야 할 필드와 메소드를 정의해 놓은 추상적인 클래스
추상 메서드
- 추상 클래스에서만 선언할 수 있는 메서드
- 하위 클래스가 반드시 실행 내용을 채우도록 강제한다.
- 중괄호를 사용하지 않으며 세미콜론(;)으로 끝낸다.
public abstract class 클래스명 { // 추상 클래스
public abstract void 메소드명(); // 추상 메서드
}
주의할 점
부모클래스를 상속받은 자식클래스는 항상 부모 클래스 객체 부터 생성한 후 자식 클래스 객체가 생성된다.
인터페이스 (Interface)
- 객체의 사용 방법을 정의한 타입
- 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출
- 추상 메소드와 유사 (차이점 : 여러개의 인터페이스 구현 가능, 인터페이스 간 상속 가능)
• 선언법
interface 인터페이스명{
타입명 = 값; // 값은 상수이며 초기화 필요
타입 메소드명( 매개변수 )
default 타입 메소드명(매개변수) { }
static 타입 메소드명 (매개변수) {}
}
• 익명 객체 구현
- 자주 사용되지 않는 객체라면 객체 선언 시 메소드를 정의해주어 사용할 수 있다.