클래스 간의 관계와 상속
부모 클래스의 필드와 메서드를 자식 클래스에게 물려줌
코드의 중복 제거, 재사용성 증가로 생산성과 유지보수성에 유리해짐
- 상속
public class 자식클래스 extends 부모클래스 {
}
- 클래스간의 관계
- 상속관계: is - a ("~은 ~이다.")
- 포함관계: has - a ("~은 ~을 가지고 있다.")
- Java는 다중상속을 허용하지 않음
- final 클래스: final class 클래스명으로 선언
- 더 이상 상속할 수 없음
- final 메서드: final 반환타입 메서드명()으로 선언
- 더 이상 오버라이딩 할 수 없음
- Object 클래스: Java 내 모든 클래스들의 최상위 부모 클래스
- 모든 클래스는 Object의 메서드를 사용할 수 있음
- 부모 클래스가 없는 자식 클래스는 컴파일러에 의해 자동으로 Object 클래스를 상속받음
오버라이딩
부모 클래스로부터 상속받은 메서드의 내용을 재정의하는 것
- 오버라이딩 조건
- 선언부가 부모 클래스의 메서드와 일치
- 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없음
- 예외는 부모 클래스의 메서드보다 많이 선언 불가능
- super: 부모 클래스의 멤버를 참조할 수 있는 키워드
//자식 클래스의 메서드
public void setCarInfo(String model, String color, double price) {
super.model = model; // model은 부모 필드에 set
super.color = color; // color는 부모 필드에 set
this.price = price; // price는 자식 필드에 set
}
- super(): 부모 클래스의 생성자를 호출할 수 있는 키워드
- 자식 클래스 객체가 생성될 때 부모 클래스의 멤버들이 먼저 초기화되어야 함
- 따라서 자식 클래스의 생성자에서 부모 클래스의 생성자가 호출됨
- 부모 클래스의 생성자는 가장 첫 줄에서 호출이 되어야 함
- 컴파일러가 super();를 자식 클래스 생성자 첫 줄에 자동으로 추가해줌
다형성
- 참조변수의 타입변환
- 자동 타입변환: Mammal mammal = new Whale(); 와 같이 부모타입 변수 = 자식타입 객체; 일 때
- 강제 타입변환: 자식타입 변수 = (자식타입) 부모타입 객체; 일 때
- 자식타입 객체가 부모타입으로 자동 타입변환된 후 다시 자식타입으로 변환될 때만 가능
- 다형성: 여러 가지 형태를 가질 수 있는 능력
- 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조
- 자동 타입변환된 변수를 사용하여 각각의 자식타입 객체에 재정의 된 메서드 사용 가능
- 매개변수의 타입이 부모이면 자식 객체들을 매개값으로 전달 가능
- 반환타입이 부모이면 자식 객체들을 반환값으로 지정 가능
- instance of: 다형성 기능으로 객체의 원래 클래스명인지 확인하는 것이 필요
- {대상 객체} instance of {클래스 이름}
추상 클래스
추상 클래스 선언: abstract 키워드 사용
public abstract class 추상클래스명 {
}
추상 클래스는 추상 메서드를 포함할 수 있음
추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있음
추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출해서 만들 수 있음
- 추상 메서드
- abstract 키워드 사용하여 선언
- 정의만 할 뿐, 실행 내용이 없음
- 반드시 이후에 오버라이딩 되어야 함
public abstract class 추상클래스명 {
abstract 리턴타입 메서드이름(매개변수, ...);
}
- 추상 클래스 상속: extends 키워드 사용
public class 클래스명 extends 추상클래스명 {
@Override
public 리턴타입 메서드이름(매개변수, ...) {
// 실행문
}
}
'[스파르타코딩클럽] > Java 문법 종합반' 카테고리의 다른 글
Chapter 10. 예외처리 (0) | 2023.10.17 |
---|---|
Chapter 9. 인터페이스 (0) | 2023.10.17 |
Chapter 7. 클래스 (0) | 2023.10.16 |
Chapter 6. 컬렉션 (0) | 2023.10.13 |
Chapter 5. 배열 (0) | 2023.10.13 |