首页 > 其他分享 >类之间的6种关系详解

类之间的6种关系详解

时间:2024-08-14 15:38:45浏览次数:13  
标签:关系 定义 代码 public players 详解 之间 class

目录


在JAVA以及其他的面向对象设计模式中,类与类之间主要有6种关系,分别是:依赖、关联、聚合、组合、继承、实现,他们的耦合度依次增强。

其中,关联聚合组合关系仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等,它们在编程语言中的体现却是基本相同的

这些关系在设计类结构时帮助明确类之间的关系和职责。

依赖

  • 定义:一个类A使用到了另一个类B,类B的变化会影响到类A。。
  • 特点:短暂的,通常通过方法参数或局部变量实现。
  • 代码体现
    表现在代码层面,类B作为参数被类A在方法中使用。
    class A {
        void drive(B b) {
            b.start();
        }
    }
    

关联(Association)

  • 定义:一个类与另一个类有某种联系。

  • 特点:较为松散的关系,通常通过成员变量实现。

  • 代码体现

    class Person {
        private Car car;
    
        public Person(Car car) {
            this.car = car;
        }
    }
    

聚合(Aggregation)

  • 定义:一个类包含另一个类,表示“整体-部分”的关系。

  • 特点:弱关系,部分可以独立存在。

  • 代码体现

    class Team {
        private List<Player> players;
    
        public Team(List<Player> players) {
            this.players = players;
        }
    }
    

组合(Composition)

  • 定义:一个类包含另一个类,表示“整体-部分”的关系。

  • 特点:强关系,部分依赖于整体的生命周期。

  • 代码体现

    class House {
        private Room room;
    
        public House() {
            this.room = new Room();
        }
    }
    

继承(Inheritance)

  • 定义:一个类继承另一个类。

  • 特点:表示“是一个”的关系。

  • 代码体现

    class Animal {}
    
    class Dog extends Animal {}
    

实现(Implementation)

  • 定义:一个类实现接口。

  • 特点:实现接口中定义的方法。

  • 代码体现

    interface Flyable {
        void fly();
    }
    
    class Bird implements Flyable {
        public void fly() {
            System.out.println("Bird is flying");
        }
    }
    

标签:关系,定义,代码,public,players,详解,之间,class
From: https://www.cnblogs.com/mysticbinary/p/18359010

相关文章

  • 未来暴富都在看的高可用集群keepalived详解及常见实验
    目录一、高可用集群1.1集群类型1.2. 系统可用性1.3系统故障1.4实现高可用1.5VRRP(VirtualRouterRedundancyProtocol) 1.5.1VRRP相关术语1.5.2VRRP相关技术二、Keepalived部署 2.1keepalived简介2.2keepalived的优点三、实验详解实验环境3.1keepaliv......
  • Python轻量级 NoSQL 数据库之tinydb使用详解
    概要在现代应用开发中,使用数据库来存储和管理数据是非常常见的需求。对于简单的数据存储需求,关系型数据库可能显得过于复杂。TinyDB是一个纯Python实现的轻量级NoSQL数据库,专为嵌入式场景设计,适用于小型项目、原型开发和教学等场景。本文将详细介绍TinyDB库,包括其安......
  • Python之sys.argv功能使用详解
    概要在Python编程中,命令行参数是与程序交互的重要方式之一。通过命令行参数,用户可以在运行脚本时传递输入值,从而影响程序的行为。Python提供了一个非常方便的模块——sys,其中的sys.argv列表可以轻松地获取命令行参数。在本文中,将深入探讨sys.argv的使用方法,结合实际示例展示......
  • Python编程中不可忽视的docstring使用详解
    概要在Python编程中,代码的可读性和可维护性至关重要。除了清晰的命名和结构良好的代码外,良好的文档字符串(docstring)也是确保代码易于理解和使用的关键工具。docstring是Python中用于记录模块、类、方法和函数行为的字符串,帮助开发者和用户快速了解代码的功能和用法。本文将......
  • osg,objectarx及occt之间矩阵的转换
    osg的矩阵表达形式为osg::MatrixObjectArx的矩阵表达式为AcGeMatrix3docct的矩阵表达式分gp_Trsf及支持变形的gp_GTrsf osg矩阵转化为ObjectArxosg::MatrixmVPW;TcGeMatrix3dmatrix;for(inti=0;i<4;++i){for(intj=0;j<4;++j){matr......
  • IntelliJ IDEA【最新】2024终极版 下载安装教程,图文步骤详解
    文章目录软件介绍软件下载安装步骤ActivationMethod专栏推荐:超多精品软件(持续更新中…)软件介绍IntelliJIDEA是一款由JetBrains公司开发的集成开发环境(IDE),专为软件开发人员设计,尤其在Java编程领域享有极高的声誉,被认为是市场上最好的JavaIDE之一。以下是对In......
  • 【C++ Allocator】 详解C++的空间配置器和vector的底层实现以及push_back()和empalce_
    空间配置器用于管理动态内存分配和释放,STL容器类(如std::vector,std::list,std::map等)都使用配置器来管理内存。它有非常重要的特点:将容器的内存开辟和对象构造分离开将容器的对象析构和内存释放分离开这样能够高效的插入元素以及删除元素vectorSTL中典型的容器vec......
  • 基本数据类型之间的转换
    自动类型转换(隐式转换)自动类型转换发生在从低级类型向高级类型转换时,不需要进行任何显式操作。Java中的基本数据类型按照精度从低到高的顺序是:byte、short、char(在运算中视为int)、int、long、float、double。转换规则如下:精度或可表示范围小的类型自动转换成精度或可表示范围大......
  • STM32&IIC与SPI详解
    单片机里的通信协议其实蛮多的,IIC;SPI;MQTT;CAN;包括串口也是一种通信协议。而串口通信虽然实现了全双工,但需要至少三根线,为了节省这一根线的成本,于是IIC诞生了。目录一.IIC协议1.IIC的结构2.IIC的特点3.IIC的通信时序4.具体配置(32HAL库版)二.SPI协议1.SPI的结构2.SPI的特......
  • .Net Core appsettings.json详解 (多环境配置)
    前言在实际开发中一般分为开发环境与生产环境,不同环境下部分配置会有所不同,例如数据库连接字符串等。.NetCore框架中提供了三个值,Development(开发),Staging(分阶段),Production(生产环境),可以根据这三个值配置不同环境。创建appsettings文件创建项目时系统默认创建appsettin......