面向对象入门2与类的识别

news/2025/9/21 20:53:33/文章来源:https://www.cnblogs.com/05xq-blog/p/19104091

一、什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?

  • static 修饰方法的适用场景

  • 应该用 static 修饰的方法:

  • 方法与对象的状态无关,只依赖传入的参数完成功能(如  Math.sqrt() )。

  • 工具类方法(如  Arrays.sort() )。

  • 工厂方法(创建对象但不依赖实例状态)。

  • 不用 static 修饰的方法:

  • 依赖对象的实例变量(必须先创建对象才能调用)。

  • 方法行为与对象状态紧密相关。

  • Student 的 getName():

  • 不应该用 static,因为每个学生的名字是实例属性,需要针对具体对象调用。

二、购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?

购物车案例的类/方法/属性分析方法

  • 找出类、方法、属性的方法:

1. 先从需求中识别名词 → 可能是类(如  ShoppingCart ,  Product ,  User )。

2. 识别动词 → 可能是方法(如  addProduct ,  removeProduct ,  getTotalPrice )。

3. 名词的特征 → 可能是属性(如  productId ,  name ,  price ,  quantity )。

  • 判定归属:

  • 属性属于哪个类:看这个数据是描述哪个实体的状态。

  • 方法属于哪个类:看这个操作是哪个实体的行为。

例如: addProduct  是购物车的行为 → 放在  ShoppingCart  类中; price  是商品的特征 → 放在  Product  类中。

三、一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。

避免类名冲突 & 代码管理

  • 避免同名:使用包(package)机制,不同包可以有同名类。
    例如: com.mycompany.user.User  和  com.othercompany.user.User  是两个完全不同的类。

  • 管理代码:

  • 按功能模块划分包(如  com.company.shop.cart ,  com.company.shop.product )。

  • 大型项目可用 Maven/Gradle 做多模块管理。

  • 使用版本控制(Git)管理代码。

  • 举例:

com.company.project.model    // 存放实体类
com.company.project.service  // 存放业务逻辑
com.company.project.dao      // 存放数据访问
com.company.project.util     // 存放工具类

四、 Java编程规范

变量命名

  • 采用驼峰命名法(camelCase),首字母小写。

  • 成员变量、局部变量避免使用  _  或  $  开头。

类命名

  • 采用 Pascal 命名法(PascalCase),首字母大写。

  • 类名应体现业务含义,避免无意义的  Base ,  Util  等泛称。

方法命名

  • 采用驼峰命名法(camelCase)。

  • 方法名应是动词或动词短语(如  getUser ,  calculatePrice )。

常量命名

  • 全部大写,用下划线分隔(UPPER_SNAKE_CASE)。

  • 例如: MAX_COUNT ,  ORDER_STATUS_PAID 。

包命名

  • 全小写,用点分隔,通常是公司域名倒写。

  • 例如: com.alibaba.fastjson 。

代码格式

  • 缩进用 4 个空格,禁止用 Tab。

  • if/for/while  等语句块必须加花括号,即使只有一行。

OOP 规约

  • 避免在构造方法中调用可被重写的方法。

  • 重写方法时,必须加  @Override  注解。

  • 成员变量私有化(private),通过 getter/setter 访问。

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

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

相关文章

202508_天山固网_to

流量分析,dvorak键盘解码, 大小写转二进制, BIN2QRCODETags:流量分析,dvorak键盘解码,大小写转二进制,BIN2QRCODE 0x00. 题目 【天山固网——2025网络安全技能竞赛】 children of stream 附件路径:https://pan.baid…

Java学生信息管理系统代码分析

Java学生信息管理系统代码分析学生信息管理系统代码分析 功能讲解 数据处理 该程序主要处理学生信息数据,包括学生的姓名、年龄、性别、学号、专业和 GPA 等信息。这些数据通过Student类的对象进行封装,并存储在Stud…

ArcGIS Pro中 Nodata和nan 黑边的处理 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

怎么屏蔽 ahref.com 上你不想看到的网站链接(垃圾外链)

怎么屏蔽 ahref.com 上你不想看到的网站链接(垃圾外链)在 ahref 网站查看自己网站或别人网站的外链时,查询的结果里面总会充斥着各种垃圾网站的链接,你一点击过去就会弹出一个聊天窗口或者是什么广告。 虽然时间久…

浅谈字典树

本篇文章同步发表在洛谷博客。字典树 什么是字典树? 字典树,顾名思义它是一棵类似于字典的树,用树的形态存储字符串集合。具体地,它有一个自定义的无意义的根节点(通常编号为 \(0\) 或 \(1\)),所有存储进去的字…

go-mapus为局域网地图协作而生

很多年前就用mapus了,它是用实时数据库实现协作功能。可是实时数据库是国外的,不好用,速度慢,经常封掉。 这次直接用sqlite,简单快捷,加上websocket即可,没有原来想象的那么玄乎,代码也就几千行。 我把几十G的…

【工具变量】“国家级大数据综合试验区”试点城市DID(2000-2024年) - 教程

【工具变量】“国家级大数据综合试验区”试点城市DID(2000-2024年) - 教程2025-09-21 20:28 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x…

《手搓动态顺序表:从数组到自动扩容的华丽转身》 - 详解

《手搓动态顺序表:从数组到自动扩容的华丽转身》 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

板子大全

整理一下常用的板子,并重新复习一下。线段树 维护复杂信息时重载 + 号,不同的修改直接在 upd() 中改。 struct SegTree{ #define ls u<<1 #define rs u<<1|1 #define mid ((l+r)>>1)ll tr[N<&l…

通过人大金仓数据库的逻辑备份与还原功能实现数据迁移

1、源数据库的操作 1.1、逻辑备份如上图所示,在源数据库进行备份。 2、目标数据库的操作 2.1、新建数据库如上图所示,新建一个目标数据库。如上图所示,设置新建数据库的名称(本例为 testDB )。如上图所示,新建目…

完整教程:GS1-128(EAN-128)编码构造方式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Chapter 7 Color Detection

img = cv2.imread(images/lambo.png)def stackImages(scale, imgArray):rows = len(imgArray)cols = len(imgArray[0])rowsAvailable = isinstance(imgArray[0], list)width = imgArray[0][0].shape[1]height = imgArr…

《原子习惯》-读书笔记7

2025.09.21 Day7 第6章 原动力被高估,环境往往更重要 1、产品或服务越是触手可及,你就越有可能去尝试。人们爱喝百威清啤的原因是每个酒吧里都供应它,而人们爱去星巴克的原因是它到处都有。[插图]我们喜欢一切尽在自…

PyQt数字转大写金额GUI程序开发及财务规范实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第3周预习作业

Java 1. static 方法的使用与特性 应使用 static 修饰的方法:不依赖实例变量或实例方法的方法(工具方法)。 仅操作静态变量或参数的方法。 工厂方法、单例模式获取实例的方法。 纯函数式方法(无状态、输入决定输出…

01自我介绍加规划

01自我介绍加规划1. 自我介绍 大家好~我是一名大三的学生,在机缘巧合下我选择了数据科学与大数据技术这个专业,其实这纯粹是我经过多种排除下的一个结果,我第一pass掉了电子信息工程的电路,又觉得自己胜任不了需要…

《原子习惯》-读书笔记6

2025.09.19 Day6 1、研究人员向他们提出了额外要求,即他们需要为接下来的一周制订计划,明确何时何地进行锻炼。具体地说,第三组的每个成员都完成了下面这句话:“下周,我将于日时地进行为时至少20分钟的剧烈运动。…

Java LTS版本进化秀:从8到21的欢乐升级之旅

困惑于Java版本选择?轻松幽默地穿越Java LTS版本时光隧道,掌握从Java 8到21的关键特性。通过一家初创公司的系统升级故事,直观了解每个版本如何解决代码冗余、性能瓶颈等开发痛点,助你在技术选型中做出明智决策。嘿…

201912_EASER

压缩文件,掩码爆破,明文碰撞,伪加密,PNG高度隐写Tags:压缩文件,掩码爆破,明文碰撞,伪加密,PNG高度隐写 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称…