상속
- 자바에서 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 속성과 메서드를 새로운 클래스(자식 클래스 또는 서브 클래스)가 물려받는 기능
- 상속을 통해 자식 클래스는 부모 클래스의 기능을 재사용하거나 확장 가능
상속 기본 문법
extends 키워드 사용
class 부모클래스 {
// 부모 클래스의 멤버 변수와 메서드
}
class 자식클래스 extends 부모클래스 {
// 자식 클래스는 부모 클래스의 멤버를 상속받음
}
// 예제
class Animal {
void sound() {
System.out.println("Some sound...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Woof woof!");
}
}
상속의 장점
- 코드 재사용성: 기존 클래스의 기능을 재사용할 수 있어 중복을 줄임.
- 계층 구조 생성: 여러 클래스를 계층적으로 구성하여 체계적인 코드 구조를 만듦.
오버라이딩 (Method Overriding)
상속받은 메서드를 자식 클래스에서 변경하려면 메서드 오버라이딩을 사용한다. 자식 클래스에서 부모 클래스와 동일한 메서드 이름, 매개변수, 반환 타입을 가진 메서드를 정의하면, 부모의 메서드를 덮어쓴다.
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark!");
}
}
2. 생성자
생성자는 객체가 생성될 때 호출되는 특별한 메서드로, 주로 객체의 초기화에 사용된다. 생성자의 이름은 클래스명과 같아야 하며, 반환 타입이 없다.
기본 생성자와 매개변수 생성자
- 기본 생성자: 매개변수가 없는 생성자.
- 매개변수 생성자: 객체 생성 시 초기화에 필요한 값을 전달받는 생성자.
class Animal {
String name;
// 기본 생성자
public Animal() {
this.name = "Unknown";
}
// 매개변수 생성자
public Animal(String name) {
this.name = name;
}
}
상속과 생성자
상속에서는 자식 클래스가 객체로 생성될 때 부모 클래스의 생성자가 먼저 호출된다. 자식 클래스의 생성자에서 super()를 사용하여 부모 생성자를 명시적으로 호출할 수 있으며, 부모 클래스에 매개변수 생성자가 있을 때는 명시적으로 호출해 초기화하는 것이 좋다.
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
}
class Dog extends Animal {
public Dog(String name) {
super(name); // 부모 클래스의 생성자 호출
}
}
기본 규칙
- 자식 클래스의 생성자는 자동으로 부모 클래스의 기본 생성자를 호출한다. (super()가 생략된 경우)
- 부모 클래스에 기본 생성자가 없고 매개변수 생성자만 있을 경우, 자식 클래스는 super(매개변수)를 통해 부모 생성자를 호출해야 한다.
'CS' 카테고리의 다른 글
소프트웨어 설계 (1) | 2025.02.06 |
---|---|
API(Application Programming Interface)란? (0) | 2024.09.21 |
클라이언트 사이드 렌더링(CSR) / 서버 사이드 렌더링 (SSR) (0) | 2024.03.05 |