预习3

问题1

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

  • 当方法属于类本身,并且不依赖于类的实例,即调用该方法时不需要创建类的对象,或者方法所执行的操作与类的特定实例无关时,此时应该用static修饰,这类方法称为静态方法。
  • 不用static修饰的方法往往需要依赖类的实例,方法中可以访问实例的属性和其他实例方法,是与具体对象相关联的行为。
  • StudentgetName方法不应该用static修饰。因为getName是获取学生对象的姓名,不同的Student实例有不同的姓名,该方法需要依赖Student的实例,不属于static修饰的范畴。

问题2

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

  • 在购物车案例中,通常使用面向对象分析的方法来找出类、方法和属性。首先识别问题中涉及的实体(如商品、购物车等),这些实体对应类;然后分析每个实体的行为(如商品的获取价格、购物车的添加商品等),这些行为对应方法;实体的特征(如商品的名称、价格等)对应属性。
  • 判定方法与属性属于哪个类,主要看该方法或属性是描述哪个类的行为或特征。例如,“添加商品到购物车”这个行为是购物车的行为,所以对应的方法属于购物车类;“商品的名称”是商品的特征,所以对应的属性属于商品类。

问题3

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

  • 为避免类同名,通常采用包(package)机制,将类放在不同的包下。包名采用有层次结构的命名方式,一般以使用公司域名反转开头,再加上项目相关标识等,这样不同项目或不同开发者的类就可以通过包名来区分。
  • 管理项目中的类,一方面通过包进行逻辑分组,将功能相关的类放在同一个包下,比如处理用户相关的类放在com.user包下,处理订单相关的类放在com.order包下;另一方面可以借助版本控制工具(如Git)进行代码版本管理,同时结合项目构建工具(如Maven、Gradle)来管理项目的依赖和编译等。例如,一个经济相关项目,把商品类Goods放在com.ecomic.goods包下,订单类Order放在com.order包下,这样既避免了类名冲突风险,也方便代码管理。

问题4

阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。

  • 变量命名:采用小驼峰命名法,即首字母小写,后续单词首字母大写,并且按照英文直译便于读取区分,例如userName表示用户名。
  • 类命名:采用大驼峰命名法,首字母大写,后续单词首字母大写,同上,要体现类的功能或职责,例如UserService表示用户服务类。
  • 方法命名:采用小驼峰命名法,动词在前,要能清晰表达方法的功能,例如getUserName表示获取用户名,addGoodsToCart表示向购物车添加商品。
  • 常量命名:全部大写,单词之间用下划线分隔,例如MAX_STOCK表示最大库存。
  • 包命名:采用小写字母,多层包之间用点分隔,一般以公司域名反转开头,再加上项目和模块等信息,例如com.alibaba.ecommerce.order
  • 代码格式:缩进使用4个空格;一行代码长度不超过指定字符数(如120个字符),超过时要换行;运算符两边、逗号后面要加空格等,例如:
int sum = a + b;
List<String> list = new ArrayList<>();
  • OOP规约:类成员变量若为非static,不要在类的构造方法中初始化时直接赋值为null,应使用默认值或在声明时赋值;重写方法时,尽量不要修改方法的访问权限;工具类应采用private的构造方法,禁止创建实例等。
posted @ 2025-09-21 10:56  Jbuckle  阅读(0)  评论(0)    收藏  举报