상속 Java (예제 포함)
⚡ 스마트 요약
상속 Java `extends`는 한 클래스가 다른 클래스의 필드와 메서드를 `extends` 키워드를 통해 상속받는 메커니즘입니다. 이는 코드 재사용성을 높이고 슈퍼클래스와 서브클래스 간의 동일/대(Is-A) 관계를 나타내는 데 유용합니다.
상속이란 무엇입니까?
계승 한 클래스가 다른 클래스의 속성을 획득하는 메커니즘입니다. 예를 들어, 아이는 부모의 특성을 물려받습니다. 상속을 통해 기존 클래스의 필드와 메서드를 재사용할 수 있습니다. 따라서 상속은 재사용성을 용이하게 하며 OOP의 중요한 개념입니다.
상속이란 무엇입니까? Java?
Java 계승 한 클래스가 다른 클래스의 속성을 획득하는 메커니즘입니다. ~ 안에 Java, 두 클래스 사이에 "Is-A" 관계가 존재할 때 상속을 사용합니다. 부모 클래스를 슈퍼클래스, 상속받은 클래스를 서브클래스라고 합니다. 키워드 extends 하위 클래스가 슈퍼 클래스의 기능을 상속하는 데 사용됩니다. 상속은 코드의 재사용성으로 이어지기 때문에 중요합니다.
Java 상속 구문:
class subClass extends superClass { //methods and fields }
상속의 종류 Java
다음은 다양한 유형의 상속입니다. Java:
- 단일 상속
- 다중 상속
- 다단계 상속
- 계층 적 상속
- 하이브리드 상속
1. 단일 상속:
단일 상속에서는 하나의 클래스가 다른 클래스를 확장합니다(하나의 클래스만).

위 다이어그램에서 클래스 B는 클래스 A만 확장합니다. 클래스 A는 슈퍼 클래스이고 클래스 B는 하위 클래스입니다.
2. 다중 상속:
다중 상속은 상속 중 하나입니다. Java 하나의 클래스가 둘 이상의 클래스를 확장하는 유형. Java 다중 상속을 지원하지 않습니다.
위의 다이어그램에 따라 클래스 C는 클래스 A와 클래스 B를 모두 확장합니다.
3. 다단계 상속:
다중 수준 상속에서는 하나의 클래스가 파생 클래스에서 상속될 수 있습니다. 따라서 파생 클래스는 새 클래스의 기본 클래스가 됩니다.
다이어그램에 표시된 대로 클래스 C는 B의 하위 클래스이고 B는 클래스 A의 하위 클래스입니다.
4. 계층적 상속:
계층적 상속에서는 하나의 클래스가 여러 하위 클래스에 상속됩니다.
위의 예에 따라 클래스 B, C, D는 동일한 클래스 A를 상속합니다.
5. 하이브리드 상속:
하이브리드 상속은 상속 유형 중 하나입니다. Java 이는 단일 상속과 다중 상속의 조합입니다.
위의 예에 따라 클래스 A의 모든 공개 및 보호 멤버는 먼저 클래스 B를 통해, 두 번째로 클래스 C를 통해 클래스 D로 상속됩니다.
참고 : Java 하이브리드/다중 상속을 지원하지 않습니다.
상속 Java 예시
다음은 상속의 예입니다. Java:
class Doctor { void Doctor_Details() { System.out.println("Doctor Details..."); } } class Surgeon extends Doctor { void Surgeon_Details() { System.out.println("Surgen Detail..."); } } public class Hospital { public static void main(String args[]) { Surgeon s = new Surgeon(); s.Doctor_Details(); s.Surgeon_Details(); } }
슈퍼 키워드
super 키워드는 "this" 키워드와 유사합니다. 키워드 super는 부모 클래스의 모든 데이터 멤버나 메서드에 액세스하는 데 사용할 수 있습니다. Super 키워드는 다음에서 사용할 수 있습니다. 변수, 메서드 및 생성자 수준.
구문 :
super.<method-name>();
또한 확인:- 이 키워드는 Java: 예시와 함께 사용 방법 및 정의
예제를 통해 OOP의 상속 배우기
동일한 뱅킹 애플리케이션을 고려해보세요. 이전 예.
우리는 두 가지 다른 계좌 유형을 개설해야 합니다. 하나는 저장용이고 다른 하나는 확인용(현재라고도 함)입니다.
코딩에 접근하는 방법을 비교하고 연구해 봅시다. 구조화되고 객체지향적인 프로그래밍 관점.
구조적 접근: 구조적 프로그래밍에서는 두 개의 함수를 생성합니다.
- 철회할 하나
- 그리고 다른 하나는 입금 작업을 위한 것입니다.
이러한 기능의 작동은 계정 전체에서 동일하게 유지됩니다.
OOP의 접근 방식: 를 사용하는 동안 OOP 프로그래밍 접근 방식. 우리는 두 개의 클래스를 만들 것입니다.
- 각각 입금 및 출금 기능이 구현되어 있습니다.
- 이로 인해 추가 작업이 중복됩니다.
소프트웨어 변경 요청
이제 소프트웨어 업계에서 흔히 볼 수 있는 요구 사항 사양이 변경되었습니다. 초과인월 기능을 갖춘 권한 있는 은행 계좌 기능을 추가해야 합니다. 기본적으로 당좌인월은 귀하의 계좌 잔고보다 더 많은 금액을 인출할 수 있는 기능입니다.
구조적 접근: 기능적 접근 방식을 사용하여 이미 테스트되고 기준이 설정된 철회 기능을 수정해야 합니다. 그리고 아래와 같은 메소드를 추가하면 새로운 요구 사항을 처리할 수 있습니다.
OOP의 접근 방식: OOP의 접근 방식을 사용하면 철회 기능을 고유하게 구현한 새 클래스를 작성하기만 하면 됩니다. 우리는 테스트된 코드 조각을 건드린 적이 없습니다.
다른 변경 요청
요구 사항이 더 변경되면 어떻게 되나요? 고유한 입금 요구 사항이 있는 신용 카드 계좌를 추가하고 싶습니다..
구조적 접근: 구조적 접근 방식을 사용하면 테스트된 입금 코드 부분을 다시 변경해야 합니다.
OOP의 접근 방식: 하지만 객체지향적 접근 방식을 사용하면 입금 메서드에 대한 고유한 구현을 가진 새로운 클래스를 생성하기만 하면 됩니다(아래 이미지에서 빨간색으로 강조 표시됨). 따라서 구조적 프로그래밍이 처음에는 더 쉬운 접근 방식처럼 보일지라도 장기적으로는 객체지향적 프로그래밍이 더 유리합니다.
OOP 상속의 장점
그러나 모든 클래스에 걸쳐 반복되는 코드 조각이 있다고 주장할 수도 있습니다.
이를 극복하기 위해 부모 클래스인 "account"를 만들고 입금 및 인출과 같은 기능을 구현합니다. 그리고 자식 클래스가 "account" 클래스를 상속하도록 합니다. 그러면 자식 클래스는 account 클래스에서 인출 및 입금 기능에 액세스할 수 있습니다. 이 기능은 개별적으로 구현할 필요가 없습니다. 이는 자바에서의 상속. .












