서론
객체 지향의 특징 4가지를 정리할 예정입니다.
1. 캡슐화
2. 추상화
3. 상속
4. 다형성
상속이란
상속 : 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받아 사용하는 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나
상속에 관련된 개념은 추상화, 상위 클래스, 하위 클래스 입니다.
추상화: 구체적인 구현 세부 사항을 감추고, 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
상위 클래스(Super Class): 다른 클래스가 상속받는 클래스. 부모 클래스 또는 기본 클래스
하위 클래스(Sub Class): 상위 클래스를 상속받는 클래스. 자식 클래스 또는 파생 클래스
하위 클래스가 상속을 통해 상위 클래스의 속성과 메서드를 물려받아(공통기능) 재사용하고, 하위 클래스는 공통된 특성과 기능을 물려받았기 때문에 중복된 코드를 줄일 수 있습니다.
상속을 통해 코드의 재사용성을 높이고 클래스 간의 관계를 명확히 할 수 있습니다.
Java에서의 상속 문법
Java에서 상속을 구현하려면 extends 키워드를 사용해야 합니다.
예제 코드
// 상위 클래스
class Vehicle {
int speed;
Vehicle(int speed) {
this.speed = speed;
}
void displayInfo() {
System.out.println("Speed: " + speed);
}
}
// 하위 클래스
class Car extends Vehicle {
int gear;
Car(int speed, int gear) {
super(speed);
this.gear = gear;
}
@Override
void displayInfo() {
super.displayInfo();
System.out.println("Gear: " + gear);
}
}
// 하위 클래스
class Bike extends Vehicle {
String type;
Bike(int speed, String type) {
super(speed);
this.type = type;
}
@Override
void displayInfo() {
super.displayInfo();
System.out.println("Type: " + type);
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car(120, 5);
Bike myBike = new Bike(80, "Mountain");
myCar.displayInfo();
myBike.displayInfo();
}
}
상속의 특징
1. 메서드 오버라이딩
2. super 키워드
3. 다중 상속의 제한
1. 메서드 오버라이딩 (Method Overriding): 하위 클래스는 상위 클래스의 메서드를 재정의(오버라이딩)할 수 있습니다. 오버라이딩된 메서드는 하위 클래스에서 상위 클래스의 메서드와 동일한 이름, 반환 타입, 매개변수를 가져야 합니다.
class Animal {
void eat() {
System.out.println("This animal eats food.");
}
}
class Dog extends Animal {
@Override
void eat() {
System.out.println("The dog eats bones.");
}
}
2. super 키워드: 하위 클래스에서 상위 클래스의 멤버를 참조할 때 사용합니다. 예를 들어, 상위 클래스의 생성자를 호출하거나 상위 클래스의 메서드를 호출할 때 사용합니다.
class Animal {
void eat() {
System.out.println("This animal eats food.");
}
}
class Dog extends Animal {
@Override
void eat() {
super.eat(); // 상위 클래스의 eat 메서드 호출
System.out.println("The dog eats bones.");
}
}
3. 다중 상속의 제한: Java는 다중 상속을 직접적으로 지원하지 않습니다. 즉, 하나의 클래스는 한 번에 하나의 다른 클래스를 상속받을 수 있습니다. 하지만 인터페이스를 통해 다중 상속과 유사한 효과를 낼 수 있습니다.
정리
상속은 객체 지향 프로그래밍에서 상위 클래스의 속성과 메서드를 하위 클래스가 물려받아 재사용하는 개념입니다.
추상화를 통해 객체의 공통적인 특성과 기능을 상위 클래스로 정의하고, 상속을 통해 하위 클래스가 이를 재사용하며 구체적인 기능을 추가합니다. 이를 통해 코드의 재사용성을 높이고 중복을 줄이며, 계층 구조를 통한 유연한 설계를 가능하게 합니다.
'JAVA > 기초개념' 카테고리의 다른 글
객체 지향의 설계 원칙 SOLID 법칙 (0) | 2024.05.29 |
---|---|
[Java] 객체 지향 언어의 특징 - 다형성 (오버로딩, 오버라이딩) (0) | 2024.05.28 |
[Java] 객체 지향 언어의 특징 - 추상화 (1) | 2024.05.17 |
[Java] 객체 지향 언어의 특징 - 캡슐화(Encapsulation) (0) | 2024.05.16 |