상속(Inheritance) 개념
상속은 하나의 클래스가 다른 클래스를 기반으로 하여 새로운 기능을 추가하거나 기존의 기능을 확장할 때 사용됩니다. 상속을 통해 클래스 간의 관계를 정의하고, 기존 클래스의 속성과 메서드를 재사용하여 새로운 클래스를 만들 수 있습니다.
기본 용어
- 부모 클래스 (Parent Class):
- 상속을 제공하는 클래스입니다. 슈퍼 클래스 또는 기반 클래스라고도 합니다.
- 공통된 속성과 메서드를 정의합니다.
- 자식 클래스 (Child Class):
- 부모 클래스를 상속받아 새로운 클래스를 정의합니다. 서브 클래스 또는 파생 클래스라고도 합니다.
- 부모 클래스의 속성과 메서드를 상속받아 사용할 수 있으며, 필요에 따라 새로운 속성과 메서드를 추가할 수 있습니다.
상속의 기본 문법
상속을 구현하기 위해 extends 키워드를 사용합니다. 자식 클래스는 extends 키워드를 사용하여 부모 클래스를 상속받습니다.
// 부모 클래스
public class Parent {
// 부모 클래스의 필드
int number;
// 부모 클래스의 메서드
public void showNumber() {
System.out.println("Number: " + number);
}
}
// 자식 클래스
public class Child extends Parent {
// 자식 클래스의 필드
String text;
// 자식 클래스의 메서드
public void showText() {
System.out.println("Text: " + text);
}
}
상속의 주요 특징
- 속성과 메서드 재사용:
- 자식 클래스는 부모 클래스의 모든 비공개(private) 멤버를 제외한 속성과 메서드를 상속받아 재사용할 수 있습니다.
- 자식 클래스는 부모 클래스에서 정의된 메서드를 호출하거나, 필요에 따라 메서드를 오버라이드(재정의)하여 기능을 수정할 수 있습니다.
- 확장성:
- 상속을 통해 기존 클래스의 기능을 확장할 수 있습니다. 새로운 기능을 추가하거나 기존 기능을 변경할 수 있습니다.
- 계층적 구조:
- 상속을 통해 클래스 간에 계층적인 구조를 만들 수 있습니다. 예를 들어, Animal 클래스가 Dog와 Cat 클래스를 부모 클래스로 가질 수 있습니다.
- 다형성:
- 상속을 통해 다형성(polymorphism)을 구현할 수 있습니다. 다형성은 동일한 메서드 호출이 다른 동작을 수행할 수 있게 하는 개념입니다. 예를 들어, Animal 클래스의 makeSound() 메서드를 Dog와 Cat 클래스에서 다르게 구현할 수 있습니다.
예제: 간단한 상속
// 부모 클래스
public class Vehicle {
// 속성
String brand;
// 메서드
public void start() {
System.out.println(brand + " vehicle is starting.");
}
}
// 자식 클래스
public class Car extends Vehicle {
// 추가된 속성
int numberOfDoors;
// 추가된 메서드
public void openDoors() {
System.out.println("Opening " + numberOfDoors + " doors.");
}
}
// 메인 클래스
public class Main {
public static void main(String[] args) {
// Car 객체 생성
Car myCar = new Car();
myCar.brand = "Toyota";
myCar.numberOfDoors = 4;
// 상속받은 메서드 호출
myCar.start(); // "Toyota vehicle is starting."
// 자식 클래스의 메서드 호출
myCar.openDoors(); // "Opening 4 doors."
}
}
설명
- 부모 클래스 (Vehicle):
- Vehicle 클래스는 brand 속성과 start() 메서드를 정의합니다. 이 클래스는 일반적인 차량의 기능을 제공합니다.
- 자식 클래스 (Car):
- Car 클래스는 Vehicle 클래스를 상속받아 brand 속성과 start() 메서드를 사용합니다.
- Car 클래스는 numberOfDoors 속성과 openDoors() 메서드를 추가하여 Car에 특화된 기능을 제공합니다.
- 메인 클래스 (Main):
- main 메서드에서 Car 클래스의 인스턴스를 생성하고, 부모 클래스에서 상속받은 start() 메서드와 자식 클래스에서 추가된 openDoors() 메서드를 호출합니다.
요약
- 상속을 통해 자식 클래스는 부모 클래스의 속성과 메서드를 재사용할 수 있으며, 새로운 기능을 추가하거나 기존 기능을 확장할 수 있습니다.
- 상속은 코드의 재사용성을 높이고, 계층적 구조를 만들며, 다형성을 지원합니다.
- 상속을 구현할 때는 extends 키워드를 사용하여 부모 클래스를 지정하고, 자식 클래스에서 부모 클래스의 기능을 상속받아 사용할 수 있습니다.
'JAVA' 카테고리의 다른 글
객체지향(추상 클래스 (Abstract Class) ,인터페이스 (Interface)) (0) | 2024.07.24 |
---|---|
객체지향(오버로딩 (Overloading), 오버라이딩 (Overriding)) (0) | 2024.07.24 |
객체지향(지역 변수, 상수) (1) | 2024.07.24 |
객체지향 프로그래밍 (클래스와 인스턴스)란? (0) | 2024.07.24 |
컬렉션(List, Set, Queue, Map ) (1) | 2024.07.23 |