자바에서 상속은 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나입니다. 상속은 클래스 간에 코드를 재사용하고 클래스의 계층 구조를 형성하는 데 사용됩니다.
자바에서 클래스는 다른 클래스로부터 상속을 받을 수 있습니다. 상속을 통해 부모 클래스의 특성과 메소드를 자식 클래스가 물려받을 수 있습니다. 상속은 코드의 재사용성을 높이고 유지보수를 쉽게 만들어줍니다.
상속은 객체 지향 프로그래밍에서 중요한 특징 중 하나로, 클래스 간의 계층 구조를 형성하여 코드의 재사용성을 높이는 메커니즘입니다. 다음은 상속의 주요 특징에 대한 설명입니다.
자바에서 상속을 사용하는 방법은 다음과 같습니다.
먼저, 부모 클래스를 정의합니다. 이 클래스는 공통된 특성이나 메소드를 포함합니다.
// 부모 클래스
class 부모클래스 {
int 부모변수;
void 부모메소드() {
System.out.println("부모 메소드");
}
}
Java자식 클래스를 정의하고, extends 키워드를 사용하여 부모 클래스를 상속받습니다.
// 자식 클래스
class 자식클래스 extends 부모클래스 {
int 자식변수;
void 자식메소드() {
System.out.println("자식 메소드");
}
}
Java자식 클래스의 객체를 생성하고, 부모 클래스의 멤버와 자식 클래스의 멤버를 사용할 수 있습니다.
public class Main {
public static void main(String[] args) {
// 자식 클래스의 객체 생성
자식클래스 자식 = new 자식클래스();
// 부모 클래스의 변수 및 메소드 사용
자식.부모변수 = 10;
자식.부모메소드();
// 자식 클래스의 변수 및 메소드 사용
자식.자식변수 = 20;
자식.자식메소드();
}
}
Java💡상속을 통해 부모 클래스의 특성을 재사용하고, 자식 클래스에서 필요에 맞게 확장 및 수정하여 유연하게 프로그램을 구성할 수 있습니다.
메소드 오버라이딩은 자식 클래스에서 부모 클래스의 메소드를 재정의하는 개념입니다. 이를 통해 자식 클래스는 부모 클래스에서 상속받은 메소드를 자신의 필요에 맞게 재정의할 수 있습니다. 메소드 오버라이딩을 통해 동일한 메소드 이름을 가지면서도 각 클래스의 특성에 맞게 동작을 변경할 수 있습니다.
// 부모 클래스
class 부모클래스 {
void 메소드() {
System.out.println("부모 메소드");
}
}
// 자식 클래스
class 자식클래스 extends 부모클래스 {
// 부모 클래스의 메소드를 오버라이딩
@Override
void 메소드() {
System.out.println("자식 메소드로 재정의");
}
}
public class Main {
public static void main(String[] args) {
// 자식 클래스의 객체 생성
자식클래스 자식 = new 자식클래스();
// 오버라이딩된 메소드 호출
자식.메소드(); // "자식 메소드로 재정의"
}
}
Java💡위의 예제에서 자식클래스는 부모클래스의 메소드를 오버라이딩하여 새로운 내용으로 구현했습니다. 메소드 오버라이딩을 통해 자식 클래스에서는 부모 클래스의 동일한 이름의 메소드를 새로운 동작으로 바꿀 수 있습니다.
super는 자바에서 사용되는 키워드 중 하나로, 주로 상속 관계에서 부모 클래스의 멤버에 접근할 때 또는 부모 클래스의 생성자를 호출할 때 사용됩니다. super는 다음과 같은 기능을 수행합니다:
자식 클래스에서 부모 클래스와 동일한 이름의 멤버(변수 또는 메소드)가 있는 경우, super 키워드를 사용하여 부모 클래스의 멤버에 접근할 수 있습니다.
class 부모클래스 {
int 변수 = 10;
void 메소드() {
System.out.println("부모 메소드");
}
}
class 자식클래스 extends 부모클래스 {
int 변수 = 20;
void 메소드() {
System.out.println("자식 메소드");
System.out.println("자식 변수: " + 변수);
System.out.println("부모 변수: " + super.변수); // super를 사용하여 부모 클래스의 변수에 접근
super.메소드(); // super를 사용하여 부모 클래스의 메소드 호출
}
}
Java자식 클래스의 생성자에서 부모 클래스의 생성자를 호출할 때 사용됩니다. 부모 클래스의 생성자는 super()를 통해 호출됩니다. 만약 부모 클래스의 매개변수를 갖는 생성자를 호출해야 한다면, super(매개변수)와 같이 사용합니다.
class 부모클래스 {
부모클래스() {
System.out.println("부모 클래스의 기본 생성자");
}
부모클래스(int 매개변수) {
System.out.println("부모 클래스의 매개변수를 갖는 생성자");
}
}
class 자식클래스 extends 부모클래스 {
자식클래스() {
super(); // 부모 클래스의 기본 생성자 호출
}
자식클래스(int 매개변수) {
super(매개변수); // 부모 클래스의 매개변수를 갖는 생성자 호출
}
}
Java💡super를 사용하여 부모 클래스의 멤버에 접근하거나 생성자를 호출함으로써, 상속된 클래스 간의 관계를 구성하고 유연하게 코드를 작성할 수 있습니다.
상속은 자바에서 객체 지향 프로그래밍의 핵심 개념 중 하나로, 부모 클래스의 특성과 메소드를 자식 클래스가 물려받아 코드의 재사용성을 높이는 메커니즘입니다. 이를 통해 계층 구조를 형성하고, 코드를 간결하게 구성할 수 있습니다. 부모 클래스의 멤버에 접근할 때는 super 키워드를 사용하며, 필요에 따라 메소드를 재정의하여 새로운 동작을 정의할 수 있습니다. 상속을 사용하면 코드의 유연성과 구조화된 관계를 유지할 수 있어 효율적인 프로그래밍이 가능합니다.
컴포넌트 스캔이란? 컴포넌트 스캔(Component Scan)은 스프링 프레임워크가 특정 패키지를 탐색하면서, 스캔 대상에 해당하는 클래스를 찾아…
스프링 빈이란? 스프링 빈(Spring Bean)은 스프링 IoC(Inversion of Control) 컨테이너가 관리하는 자바 객체를 의미합니다. 간단히…
스프링 컨테이너(Spring Container)란? 스프링 컨테이너는 스프링 프레임워크에서 가장 핵심적인 부분으로, IoC(Inversion of Control) 개념을 기반으로…
Queue란 무엇인가? Java에서 Queue는 데이터 구조의 일종으로, 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 처리합니다. 이 글에서는 Queue의…
Stack이란 무엇인가? Java에서 Stack은 자료구조의 한 종류로, 데이터를 순서대로 쌓아 올리는 형태로 운영됩니다. 컴퓨터 과학에서…
소개 자바에서 Map 인터페이스는 키(Key)와 값(Value)의 쌍을 저장하는 자료구조입니다. 이는 연관 배열이라고도 불리며, 각 키는…