Java-类和类的关系

代码

总结:

【1】面向对象的思维:找参与者,找女孩类,找男孩类

【2】体会了什么叫方法的形参,什么叫方法的实参:

具体传入的内容 实参:

【3】类和类可以产生关系:

(1)将一个类作为另一个类中的方法的形参

(2)将一个类作为另一个类的属性

1.public class Girl {
2.    //属性:
3.    String name;
4.    double weight;
5.    Mom m /*= new Mom()*/;
6.    //方法:
7.    public void add(int a){//参数是基本数据类型
8.        System.out.println(a);
9.        System.out.println(a+100);
10.    }
11.    //谈恋爱的方法:
12.    public void love(Boy b){//参数是引用数据类型Boy
13.        System.out.println("我男朋友的名字是:"+b.name+",我男朋友的年龄是:"+b.age);
14.        b.buy();
15.    }
16.
17.    //女孩跟妈妈聊天:
18.    public void wechat(){
19.        m.say();
20.    }
21.
22.    //构造器:
23.    public Girl(String name, double weight) {
24.        this.name = name;
25.        this.weight = weight;
26.    }
27.}
1.public class Boy {
2.    //属性:
3.    int age;
4.    String name;
5.    //方法:
6.    public void buy(){
7.        System.out.println("跟我谈恋爱,我给你买买买。。。");
8.    }
9.    //构造器:
10.    public Boy(int age, String name) {
11.        this.age = age;
12.        this.name = name;
13.    }
14.}
1.public class Mom {
2.    //方法:
3.    public void say(){
4.        System.out.println("妈妈唠唠叨叨 都是爱,听妈妈的话。。");
5.    }
6.}
1.public class Test {
2.    //这是一个main方法,是程序的入口:
3.    public static void main(String[] args) {
4.        //创建一个Boy类的具体的对象:
5.        Boy boy = new Boy(30,"鹿晗");
6.        //创建一个Girl类的具体的对象:
7.        Girl girl = new Girl("关晓彤",100);
8.        //谈恋爱:
9.        //girl.love(boy);
10.        Boy boy2 = new Boy(35,"陈伟霆");
11.        girl.love(boy2);
12.
13.        //还可以跟妈妈微信聊天:
14.        girl.m = new Mom();
15.        girl.wechat();
16.    }
17.}

总结

一、继承关系       

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。

二、实现关系      

实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。

三、依赖关系      

简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,让类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。

四、关联关系  

关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。

五、聚合关系      

聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。

六、组合关系     

组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。

七、总结     

对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于非洲秃鹫算法优化概率神经网络PNN的分类预测 - 附代码

基于非洲秃鹫算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于非洲秃鹫算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于非洲秃鹫优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

powershell环境变量

示例 添加临时环境变量 $Env:Path";D:\Apps\nodejs"参考 microsoft about_Environment_Variables

电容的耐压值是什么意思呢?

电容是什么? 电容是一种能以电荷的形式储存能量的装置。与同样大小的电池相比,电容能储存的能量要小得多,大约1w个电容存储的能量才顶一节电池存储的能量,但对于许多电路设计来说却足够使用了。 看下图的直插式电容,…

K8S配置资源管理

这里写目录标题 K8S配置资源管理一.Secret1.介绍2.Secret 有四种类型3.创建 Secret4.使用方式 二.ConfigMap1.介绍2.创建 ConfigMap3.Pod 中使用 ConfigMap4.用 ConfigMap 设置命令行参数5.通过数据卷插件使用ConfigMap6.ConfigMap 的热更新7.ConfigMap 更新后滚动更新 Pod K8S…

中级程序员——uniapp和小程序面试题

😄博主:小猫娃来啦 😄文章核心:uniapp和小程序面试题 文章目录 用uniapp有遇到一些兼容性问题吗?uniapp最大的优点是什么?uniapp如何实现多端兼容?uniapp是如何做跨端适配的?常用的u…

信息中心网络提出的背景、研究现状及研究内容

信息中心网络什么时候提出的?未来发展前景?有什么著名实验室在做? 1、提出背景: 互联网产生于上世纪60年代: (1)网络设备数量呈指数性增长 截至2022年底全球范围内预计将有超过280亿台终端设…

简单工厂、工厂方法和抽象工厂模式(创建型设计模式)的 C++ 代码示例模板

文章目录 前言代码仓库简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)总结参考资料作者的话 前言 简单工厂、工厂方法和抽象工厂模式(创建型设计模…

如理解WPF绑定中的UpdateSourceTrigger

在WPF中,UpdateSourceTrigger是一个枚举,用于确定绑定源(比如视图模型中的属性)的更新时机。这对于数据绑定特别重要,因为它控制着用户界面上的更改何时反映到绑定的数据源属性上。下面是UpdateSourceTrigger的几个值&…

Linux:系统基本信息扫描(2)

#网络地址:ip a------------------------------------------------------------- ip a echo "主机名:-------------------------------------------------------" hostnamectl sleep 0.5s echo "#系统基本信息:--------------------------------------------…

YOLO目标检测——无人机航拍输电线路绝缘瓷瓶数据集下载分享【对应voc、coco和yolo三种格式标签】

实际项目应用:电力系统运维、状态监测与故障诊断、智能电网建设等领域数据集说明:无人机航拍输电线路绝缘瓷瓶数据集,真实场景的高质量图片数据,数据场景丰富标签说明:使用lableimg标注软件标注,标注框质量…

用欧拉路径判断图同构推出reverse合法性:1116T4

http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…

【心得】基于flask的SSTI个人笔记

目录 计算PIN码 例题1 SSTI的引用链 例题2 SSTI利用条件: 渲染字符串可控,也就说模板的内容可控 我们通过模板 语法 {{ xxx }}相当于变相的执行了服务器上的python代码 利用render_template_string函数参数可控,或者部分可控 render_…

ThreadLocal优化

测试类证明一下ThreadLocal存储的数据是线程程安全的 package com.lin.springboot01;import org.junit.jupiter.api.Test;public class testThreadLocal {Testpublic void testThreadLocalSetAndGet(){//提供一个ThreadLocal对象ThreadLocal t1 new ThreadLocal();new Thread…

【SQL server】数据库、数据表的创建

创建数据库 --如果存在就删除 --所有的数据库都存在sys.databases当中 if exists(select * from sys.databases where name DBTEST)drop database DBTEST--创建数据库 else create database DBTEST on --数据文件 (nameDBTEST,--逻辑名称 字符串用单引号filenameD:\DATA\DBT…

Linux 基本语句_11_无名管道文件复制

父子进程&#xff1a; 父子进程的变量之间存在着读时共享&#xff0c;写时复制原则 无名管道&#xff1a; 无名管道仅能用于有亲缘关系的进程之间通信如父子进程 代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h> #inc…

mysql清除数据痕迹_MySQL使用痕迹清理~/.mysql_history - milantgh

mysql会给出我们最近执行的SQL命令和脚本&#xff1b;同linux command保存在~/.bash_history一样&#xff0c;你用mysql连接MySQL server的所有操作也会被记录到~/.mysql_history文件中&#xff0c;这样就会有很大的安全风险了&#xff0c;如添加MySQL用户的sql也同样会被明文记…

数据结构【DS】图的基本概念

定义 完全图(简单完全图) 完全无向图&#xff1a;边数为&#x1d427;&#x1d427;−&#x1d7cf;&#x1d7d0;完全有向图&#xff1a;边数为 &#x1d427;(&#x1d427;−&#x1d7cf;) 子图、生成子图 G的子图&#xff1a;所有的顶点和边都属于图G的图 G的生成子图…

数据结构与算法编程题4

删除线性表中值在s与t之间的元素&#xff08;s<t&#xff09;&#xff0c;s和t不合理或者顺序表为空则显示出错信息并退出运行。 #include <iostream> using namespace std;typedef int ElemType; #define Maxsize 100 #define OK 1 #define ERROR 0 typedef struct…

SIMULIA 2022 Abaqus新功能之非线性、工作流、子程序、Explicit等

Abaqus 非线性力学的功能增强 Valanis-Landel 超弹性材料 通过指定单轴试验数据和可选的体积试验数据&#xff08;v2022新增选项&#xff09;来定义Valanis-Landel 超弹性模型&#xff0c;该模型能精确地复现给定的数据&#xff0c;类似Marlow模型&#xff0c;但与Marlow模型的…

深信服AC设备用户认证

拓扑图 目录 拓扑图 一. 无需认证 思路&#xff1a;创建用户和组&#xff0c;将无需认证策略和用户绑定 1.创建组&#xff0c;组里添加用户 2. 新建不需要认证策略&#xff0c;将不需要认证策略和用户关联 3.验证 二.密码认证 思路&#xff1a;创建用户和组&#xff0c;并…