当前位置: 首页 > news >正文

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

一、什么样的方法应该用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.hskmm.com/?act=detail&tid=12438

相关文章:

  • 202508_天山固网_to
  • jmeter分布式压测
  • 怎么屏蔽 ahref.com 上你不想看到的网站链接(垃圾外链)
  • 浅谈字典树
  • go-mapus为局域网地图协作而生
  • 《手搓动态顺序表:从数组到自动扩容的华丽转身》 - 详解
  • 板子大全
  • 通过人大金仓数据库的逻辑备份与还原功能实现数据迁移
  • 第十二节:订单普通下单、支付回调、退款、退款回调详解
  • 《原子习惯》-读书笔记7
  • 第3周预习作业
  • 《原子习惯》-读书笔记6
  • Java LTS版本进化秀:从8到21的欢乐升级之旅
  • 201912_EASER
  • 搜索百科(3):Elasticsearch — 搜索界的“流量明星”
  • 打印机漏洞、匿名协议与AWS安全:一周技术热点解析
  • 从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
  • ALLinSSL,开源免费的SSL证书自动化管理平台
  • 《原子习惯》-读书笔记5
  • 03-袁东申论-概括原因
  • 包和final
  • 实现双向循环链表 - 详解
  • 2025-09-21 网站前几分钟还运行的好好地,几分钟后查看居然显示文件无法加载,访问首页提示无法访问此网站??!==ssl证书过期+域名解析失效
  • 20231321王曦轶《密码系统设计》第二周
  • 爱锋拍照工具 - 隐私政策
  • 周计划+总结
  • [POI 2004] MOS
  • 第03周 面向对象入门2与类的识别
  • 完整教程:启用GPU对模型进行推理,安装cuda toolkit cuDNN 9
  • 25秋周总结3