免费发布信息
微信公众号

Java中继承与聚合的区别是什么?

   来源:黔优网责任编辑:优优  时间:2023-07-27 13:33:54 浏览量:65
导读:在Java中,继承(inheritance)和聚合(aggregation)是两种不同的对象关系。它们在代码实现和语义上有所不同。继承是一种对象之间的关系,其中一个类(子类)继承另一个类(父类)的属性和方法。子类可以重用父类的代码,并

在Java中,继承(inheritance)和聚合(aggregation)是两种不同的对象关系。它们在代码实现和语义上有所不同。

继承是一种对象之间的关系,其中一个类(子类)继承另一个类(父类)的属性和方法。子类可以重用父类的代码,并可以添加新的属性和方法。继承是一种”is-a”(是一个)关系,其中子类是父类的一种特殊类型。在Java中,使用关键字extends来实现继承。

聚合是一种对象关系,其中一个类(整体)包含另一个类(部分)作为其成员变量。部分对象可以独立存在,并且可以与多个整体对象相关联。聚合是一种”has-a”(有一个)关系,其中整体对象包含部分对象。在Java中,可以通过将部分对象声明为整体对象的成员变量来实现聚合关系。

下面是一个简单的代码示例,演示了继承和聚合的区别:

// 父类class Vehicle {
    protected String brand;

    public Vehicle(String brand) {
        this.brand = brand;
    }

    public void start() {
        System.out.println("Starting the vehicle");
    }}// 子类继承父类class Car extends Vehicle {
    private int numberOfSeats;

    public Car(String brand, int numberOfSeats) {
        super(brand);
        this.numberOfSeats = numberOfSeats;
    }

    public void drive() {
        System.out.println("Driving the car");
    }}// 部分类class Engine {
    public void start() {
        System.out.println("Starting the engine");
    }}// 整体类包含部分对象class Car2 {
    private String brand;
    private Engine engine;

    public Car2(String brand, Engine engine) {
        this.brand = brand;
        this.engine = engine;
    }

    public void start() {
        engine.start();
        System.out.println("Starting the car");
    }}public class Main {
    public static void main(String[] args) {
        // 继承示例
        Car car = new Car("Toyota", 4);
        car.start(); // 调用继承自父类的方法
        car.drive(); // 调用子类的方法

        System.out.println();

        // 聚合示例
        Engine engine = new Engine();
        Car2 car2 = new Car2("Toyota", engine);
        car2.start(); // 调用整体对象的方法,并使用部分对象的方法
    }}

在上述示例中,Car类通过继承Vehicle类获得了start方法,并添加了自己的drive方法。而Car2类使用聚合关系,将Engine对象作为成员变量,通过调用整体对象的start方法,间接调用了部分对象的start方法。

 
 
 
没用 0举报 收藏 0
免责声明:
黔优网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优网官方立场,请读者仅做参考。本文标题:Java中继承与聚合的区别是什么?,本文链接:https://www.qianu.com/news/250643.html,欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法信息,请您立即点此【投诉举报】并提供有效线索,也可以通过邮件(邮箱号:kefu@qianu.com)联系我们及时修正或删除。
 
 

 

 
推荐图文
推荐商业资讯