상속은 OOPS 개념의 중요한 특징 중 하나입니다. 이는 상위 클래스로 알려진 한 클래스의 기능을 하위 클래스로 알려진 다른 클래스로 상속함으로써 코드 재사용에 도움이 됩니다. 상속이 2개 이상의 수준으로 확장되는 경우 이를 다단계 상속이라고 합니다. 하나의 새 클래스가 하나의 기본 클래스에서 파생된 클래스에서 기능을 파생하는 경우 이를 다중 수준 상속이라고 합니다. 새로운 클래스는 부모 클래스의 손자 클래스라고 합니다.
광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사예를 들어 A는 부모이고, 클래스 B는 그 자식이고, C는 B의 자식 클래스이고 A의 손자입니다. 마찬가지로 A는 클래스 B의 부모 클래스이고 클래스 C의 조부모입니다.
아래에 제공된 Java의 다중 레벨 상속 구문을 살펴보겠습니다.
class A{ //class A is parent of class B //class A is grand parent of class C public A(){ //A constructor } public void fun1(){ //function in Parent Class } } class B extends A{ //class B is a child class of class A //class B is a parent class of class C public B(){ //class B constructor } } class C extends B{ //class C is a child class of class B //class C is grand child class of class A public C(){ //Class C constructor } } public class Test{ public static void main(String[] args){ C obj = new C(); } }
다단계 상속을 구현하려면 하나의 기본 클래스(예: A)가 있어야 합니다. 그런 다음 클래스 A를 확장하는 파생 클래스 B가 있어야 하고 클래스 C는 A를 확장합니다.
다단계 상속은 하나의 파생 클래스의 기능을 다른 새 클래스로 확장하는 유형입니다. 부모 클래스 기능은 여러 수준까지 확장되므로 이러한 유형의 상속을 다중 수준 상속이라고 합니다. 하위 클래스가 상위 클래스를 확장하면 상위 클래스의 모든 기능을 사용할 수 있습니다. 따라서 이 파생 클래스의 기능을 확장한 클래스가 있으면 부모 클래스와 자식 클래스의 모든 기능을 갖춘 기본 클래스의 손자 클래스라고 합니다.
클래스 A를 상위 클래스로, 클래스 B를 클래스 A의 하위 클래스로, 클래스 C를 클래스 B의 하위 클래스로 생각하고, 클래스 C에 대해 객체가 생성될 때 위와 같이 obj라고 말합니다. 이 객체를 선언하면 클래스 C의 생성자가 호출됩니다. 우리가 알고 있듯이, 자식 클래스의 생성자가 있는 동안 부모 클래스의 첫 번째 생성자가 호출됩니다. 따라서 C()를 호출하면 B() 생성자가 호출되고 B는 클래스 B의 하위 클래스이므로 A()가 호출됩니다. 그런 다음 제어권은 하위 클래스로 돌아갑니다. 따라서 다음 시리즈에서는 생성자가 실행됩니다.
A() – > B() – > 기음()그러나 하위 클래스의 이 객체를 사용하여 메서드를 호출하면 먼저 동일한 시그니처를 가진 해당 메서드가 하위 클래스에 있는지 확인합니다. 그렇지 않은 경우 컨트롤은 메서드를 찾기 위해 상위 클래스로 전달됩니다. 따라서 이 경우 객체 obj를 사용하여 fun1()을 호출하면 제어가 C로 이동하여 그러한 메서드가 없다는 것을 알게 됩니다. 따라서 제어권은 B로 이동하여 클래스 A로 이동합니다.
그 이유는 하위 클래스에서 상위 클래스의 메소드를 쉽게 재정의할 수 있기 때문입니다. 이를 메소드 재정의라고 합니다. 따라서 재정의된 방법이 우선적으로 사용됩니다. 이러한 방식으로 다중 수준 상속은 여러 수준의 클래스에서 상속 기능을 구현합니다. 이러한 유형의 상속은 데이터 증대를 구현할 때 가장 자주 사용됩니다. 즉, 기존 코드를 업데이트하지 않고 기존 데이터의 다양성과 양을 늘리는 프로세스입니다. 또한 간단한 변환을 적용하여 사용 가능한 훈련 모델에 가변성을 도입하는 데 도움이 됩니다.
Java의 다단계 상속의 몇 가지 예를 살펴보겠습니다.
코드:
class Electronics { public Electronics(){ System.out.println("Class Electronics"); } public void deviceType() { System.out.println("Device Type: Electronics"); } } class Television extends Electronics { public Television() { System.out.println("Class Television"); } public void category() { System.out.println("Category - Television"); } } class LED extends Television { public LED() { System.out.println("Class LED"); } public void display_tech() { System.out.println("Display Technology- LED"); } } public class Tester { public static void main(String[] arguments) { LED led = new LED(); led.deviceType(); led.category(); led.display_tech(); } }
출력:
설명: 위의 예에서 Electronics 클래스는 모든 전자 장치에 대해 device_type() 메서드를 제공하는 일반 클래스입니다. 그런 다음 전자 장치를 지정하고 전자 장치 유형을 표시하는 카테고리()라는 메서드 이름을 갖는 Electronics 클래스를 확장하는 텔레비전 클래스가 있습니다. 그런 다음 클래스 LED는 TV 클래스를 확장하여 해당 디스플레이에 사용되는 기술을 지정합니다. 해당 기술이 LED임을 표시하는 방법은 display_tech()입니다.
메인 메소드에서는 LED 클래스의 객체를 만들 때 이를 사용하여 모든 상위 클래스에 대한 메소드를 호출합니다. 자식 클래스의 생성자를 호출할 때 부모 클래스의 생성자가 먼저 호출됩니다. 따라서 new LED()가 처음 호출되면 new Television()이 호출됩니다. 또한 이 생성자에서 new Electronics()가 호출되어 Class Electronics를 표시합니다.
그런 다음 텔레비전 생성자로 반환되어 클래스 텔레비전을 표시한 다음 LED 클래스 및 디스플레이인 클래스 LED로 반환됩니다. LED 클래스의 객체를 사용하여 메소드가 호출되면 먼저 제어는 LED 클래스로 이동하여 메소드(device_type())를 찾으려고 시도한 후 LED 클래스에서 찾을 수 없는 메소드를 찾기 위해 Television 클래스로 이동하고 찾지 못할 경우 추가로 찾습니다. Television 클래스에서도 상위 클래스인 Electronics로 이동하여 해당 메소드를 찾아 실행합니다.
다단계 상속은 상속의 주요 장점, 즉 여러 단계를 통한 코드 재사용성과 가독성을 구현하는 훌륭한 기술입니다. 기본 교육 자료를 제공하는 기존 코드에 가변성과 다양성을 도입하는 데 도움이 됩니다. 이 절차를 코드 문서화라고 합니다.
위 내용은 Java의 다단계 상속의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!