상속은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 한 클래스의 특성을 다른 클래스가 가져다 쓸 수 있게 해주는 매커니즘입니다. 이를 통해 기존에 작성한 코드를 재사용하고 확장할 수 있게 되며, 코드의 유지보수를 용이하게 합니다.
Java에서는 extends 키워드를 사용하여 클래스 간 상속 관계를 명시합니다. 예를 들어, "클래스 B가 클래스 A를 상속한다"라고 하면, 클래스 B는 클래스 A의 모든 인스턴스 멤버를 상속받게 됩니다. 이때 클래스 A를 부모클래스, 상위클래스 또는 슈퍼클래스라고 하고, 클래스 B를 자식클래스, 하위클래스 또는 서브클래스라고 합니다.
class A { //부모클래스
// 부모클래스의 필드
}
class B extends A { //자식 클래스
// 자식 클래스의 필드
}
상속의 주요 특징은 다음과 같습니다:
- 자식 클래스는 부모 클래스의 모든 인스턴스 멤버를 상속 받습니다. 즉, 자식 클래스의 멤버 수는 부모 클래스의 멤버 수와 같거나 많습니다.
- 부모 클래스에서 발생하는 변경 사항은 자식 클래스에 영향을 미치지만, 자식 클래스에서의 변경 사항은 부모 클래스에 영향을 주지 않습니다.
아래의 예시 코드는 부모 클래스인 Parent와 그것을 상속받은 자식 클래스인 Child를 정의하고 있습니다. 이를 통해 상속을 이해하고 자바에서 어떻게 사용하는지 알아보겠습니다.
부모 클래스: Parent
class Parent {
String parentName;
Parent(String name) {
this.parentName = name;
}
void showName() {
System.out.println("Name: " + this.parentName);
}
}
위의 코드는 부모 클래스인 Parent를 정의하고 있습니다. parentName이라는 인스턴스 변수와 Parent(String name)라는 생성자, 그리고 showName()이라는 메소드가 포함되어 있습니다. 생성자는 이름을 인자로 받아 parentName에 할당하고, showName() 메소드는 부모의 이름을 출력하는 역할을 합니다.
자식 클래스: Child
class Child extends Parent {
String childName;
Child(String parentName, String childName) {
super(parentName);
this.childName = childName;
}
void showNames() {
super.showName();
System.out.println("Child's Name: " + this.childName);
}
}
위의 코드는 자식 클래스인 Child를 정의하고 있습니다. 이 클래스는 Parent 클래스를 상속받아 extends Parent라고 선언하였습니다. childName이라는 인스턴스 변수와 Child(String parentName, String childName)라는 생성자, 그리고 showNames()라는 메소드가 포함되어 있습니다. 생성자는 부모의 이름과 자신의 이름을 인자로 받아 각각의 변수에 할당하고, showNames() 메소드는 부모의 showName() 메소드를 호출하여 부모의 이름을 출력한 뒤 자신의 이름을 출력하는 역할을 합니다.
메인 클래스와 메서드
public class Main {
public static void main(String[] args) {
Child child = new Child("Parent", "Child");
child.showNames();
}
}
메인 클래스와 메서드에서는 자식 클래스 Child의 객체를 생성하고 showNames() 메소드를 호출합니다. 객체를 생성할 때는 부모의 이름과 자식의 이름을 인자로 전달하고, showNames() 메소드를 통해 부모와 자식의 이름을 순서대로 출력합니다.
이 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Name: Parent
Child's Name: Child
첫 번째 출력은 부모 클래스의 "showName" 메서드를 통해 출력되며, 두 번째 출력은 자식 클래스의 "showNames" 메서드에서 출력됩니다. 이처럼 자식 클래스는 부모 클래스의 모든 인스턴스 멤버를 상속받아 사용할 수 있습니다.
상속은 코드의 재사용성을 높여주고, 클래스 간의 관계를 명확하게 표현해주는 중요한 기능입니다. 자바뿐만 아니라 대부분의 객체 지향 프로그래밍 언어에서 이와 비슷한 방식으로 상속을 지원하므로, 이 개념을 확실히 이해하고 있으면 여러분의 코딩 능력을 크게 향상시킬 수 있습니다.
'개발 > Java' 카테고리의 다른 글
Java에서의 참조변수 배열(클래스 배열) (0) | 2023.07.18 |
---|---|
Java에서의 오버로딩, 오버라이딩, 그리고 super() (0) | 2023.07.18 |
Java에서의 변수 유형 및 static 키워드 (0) | 2023.07.17 |
Java에서의 클래스(Class): 이해와 활용 (0) | 2023.07.17 |
Java에서의 메소드(Method): 이해와 활용 (0) | 2023.07.13 |