继承是OOPS概念的重要特征之一。它通过称为子类的另一个类继承称为父类的类的功能,有助于代码的重用。当继承扩展到超过 2 级时,称为多级继承。当一个新类从派生自一个基类的类派生特征时,就称为多级继承。据说新类是父类的孙子类。
广告 该类别中的热门课程 JAVA 掌握 - 专业化 | 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。然后必须有一个派生类B,它扩展类A,类C扩展A。
多级继承是将一个派生类的功能扩展到另一个新类的一种类型。由于父类的功能被扩展到多个级别,因此这种类型的继承称为多级继承。当子类扩展父类时,它可以使用父类的所有功能。因此,如果有一个类扩展了该派生类的功能,那么它被称为基类的孙子,具有父类和子类的所有功能。
将类 A 视为父类,类 B 视为类 A 的子类,类 C 视为类 B 的子类。当为类 C 创建对象时,请使用上面给出的 obj 。当我们声明这个对象时,就会调用类C的构造函数。众所周知,子类的构造函数首先调用其父类的构造函数。因此,当我们调用 C() 时,B() 构造函数就会被调用,而且,由于 B 是 B 类的子类,因此 A() 会被调用。然后控制权返回到子类。因此,在以下系列中,将执行构造函数:
A() –>; B() – > C()但是,当使用子类的此对象调用方法时,首先会检查子类中是否存在具有相同签名的方法。如果没有,则控制将定向到其父类来查找该方法。因此,在这种情况下,当使用对象 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 类的电视类,它指定 Electronics 设备,并有一个方法名称 –category() 来显示电子设备的类型。然后 LED 类扩展了电视类以指定用于其显示的技术。它有方法display_tech()来显示技术是LED。
在main方法中,当我们创建LED类的对象时,我们用它来调用所有父类的方法。当调用子类的构造函数时,首先调用父类的构造函数;因此,当调用 new LED() 时,首先调用 new Television() 。此外,在此构造函数中,新的 Electronics() 被调用并显示 – 电子类。
然后返回到电视构造函数并显示电视类,然后返回到 LED 类并显示 LED 类。当使用 LED 类的对象调用方法时,首先控制转到 LED 类并尝试查找方法 – device_type() 并转到 Television 类以查找在 LED 类中未找到该方法的方法,如果未找到该方法,则进一步查找该方法在 Television 类中,还会转到其进一步的超类 Electronics 并找到该方法并执行它。
多级继承是一种很好的技术,可以实现继承的主要优点,即通过多级实现代码的可重用性和可读性。它有助于向现有代码引入可变性和多样性,从而提供基本培训材料。此过程称为代码文档。
以上是Java中的多级继承的详细内容。更多信息请关注PHP中文网其他相关文章!