面向对象入门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 访问。

posted @ 2025-09-21 20:52  计算机糕手  阅读(14)  评论(0)    收藏  举报