在本文中,我们将讨论 Java 中继承和组合的区别。 本文不限于两个术语之间的比较; 除了比较,我们还将分别讨论这两个术语。

希望这篇文章能为您提供信息,并为您提供有关继承、组合及其比较的足够信息。

我们先来看看Java中继承和组合的简要说明。

继承

继承是OOPs(Object Oriented Programming System)的重要组成部分。 在 Java 中,它是一种机制,其中一个对象获取父对象的所有属性和行为。

它显示了 IS-A 关系,也称为父子关系。例如,汽车是交通工具,猫是动物,等等。

在 Java 中,借助继承,我们可以创建基于现有类的新类。当我们从现有的类继承时,可以重用父类的方法和字段。还可以向当前类添加新的方法和字段。

继承用于方法覆盖以实现运行时多态性。它还用于代码可重用性。代码重用性是一种方便我们在创建新类时重用现有类的字段和方法的方式。我们可以使用上一个类中已经定义的相同字段和方法。
extends 关键字表示从现有类派生的新类的创建。 extends一词的意思是增加功能。
在 Java 中,继承的类称为父类或超类,而新类称为子类或子类。在Java中,基于类的继承分为三种:单继承、多级继承和层次继承。在Java中使用接口可以支持多重继承和混合继承。 Java 中的类不支持它。

Java 中的继承示例

让我们通过一个例子来理解 Java 中继承的概念。 它将更清楚地解释这个概念。 在这里,Parent 类是 School,子类是 Student。 School 类包含学生的姓名,子类包含学生的 rollno。

class School{    
    String name = "John";  
}    
class Student extends School{    
 int rollno = 25;     
 public static void main(String args[]){    
    Student s1 = new Student();    
       System.out.println();    
       System.out.println("Student's Name: " + s1.name);    
       System.out.println("Student's Roll.no.: " + s1.rollno);    
    }    
}

组合

继承和组合都是设计技术。组合是设计或实现“has-a”关系的一种方式,而继承实现“is-a”关系。 “has-a”关系用于确保我们程序中的代码可重用性。在 Composition 中,我们使用引用另一个对象的实例变量。

尽管继承和组合都提供了代码可重用性,但这两个术语的区别在于,在组合中,我们不扩展类。当一个对象包含另一个对象并且该对象完全依赖于它时,两个对象的组合关系是可能的。构图代表关系的一部分。例如,房子有客厅(客厅是房子的一部分),人有心脏(心脏是人体的一部分)等等。

组合具有多种好处,例如它允许代码重用,有助于实现多重继承,它提供了更好的类的测试能力。它还允许我们使用更好的改进版本轻松替换组合类实现。使用组合概念,我们可以通过在运行时更改成员对象来动态更改程序的行为。

例子
让我们通过一个例子来理解 Java 中组合的概念。它将更清楚地解释这个概念。

class Car  
{  
    String part;  
    public void getData(String name)  
    {  
        part = name;  
        System.out.println("Car has a "+part);  
    }  
}  
class Part  
{  
    public String getPartName()  
    {  
            return "Engine";              
    }  
}  
public class Composition {  
    public static void main(String[] args) {  
        Car c1 = new Car();  
        Part p = new Part();  
        c1.getData(p.getPartName());  
     }  
}

继承与组合

现在,让我们看看Java中继承和组合的对比图。 下面根据一些特征比较这两个术语。

继承 组合
定义继承代表IS-A关系,也称为父子关系。 组合是一种设计或实现“has-a”关系的方法。
可依赖性在继承中是子类依赖于父类。 而在组合中,子类和父类都是独立的。
可重用性在继承中只能扩展一个类,这样就可以只重用一个类的代码。 在组合中可以使用多个类的功能。
多重继承 Java 不允许多重继承。 而使用组合,我们可以轻松实现多重继承。
final 类不能使用继承来扩展 final 类。 在组合中甚至可以重用来自 final 类的代码。

组合为提供了更好的代码重用方式,同时,它保护了正在重用的类不受其任何客户端的影响。 当必须从同一个家族中创建一个类时,继承非常重要。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Java中继承和组合的区别
本文链接:https://www.vsdiffer.com/vs/inheritance-vs-composition-in-java.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。