-
什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?
- 完成独立功能或创建类的实例或对类级别的属性进行操作的方法应该用static修饰。
- 不用static修饰的方法往往具有依赖实例状态、通过实例调用、可访问静态变量和方法、有this引用等特性。
- Student的getName不应该用static修饰,因为getName()的作用是获取某个学生对象的姓名,姓名是Student类的实例属性,若加上static后变成静态方法属于类本身,无法直接访问实例属性。
-
购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?
- 类是通过class关键字定义,可通过class辅助寻找,在案例中有Commodity、Main、ShoppingCart三类;属性是类中定义的成员变量,通常带有访问修饰符,例如Commodity类中的private String name和private double price;方法通过“返回值类型 方法名()”的格式定义,包含方法体{},例如ShoppingCart类中的add(Commodity item)和getQty()。
- 方法和属性在哪个类中被定义,就属于哪个类。
-
一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。
- 利用包(Package)来解决,不同包中可以存在同名类,如下
// 导入两个包中的User类 import com.school.student.User; import com.system.admin.User;
- 按 “功能 / 职责” 划分结构,如下
com.school.studentmanage/ ├─ model/ // 数据模型模块 │ └─ Student.java // 学生实体类(存储学号、姓名、年龄、班级等信息) ├─ service/ // 业务逻辑模块 │ └─ StudentService.java // 处理学生核心业务(添加、删除、查询、修改学生信息) ├─ controller/ // 交互控制模块 │ └─ StudentController.java // 接收用户操作(如命令行输入、界面请求)并调用服务 ├─ util/ // 学生模块专用工具 │ └─ StudentValidator.java // 校验学生信息(如学号格式、年龄范围) └─ common/ // 通用组件├─ DateUtils.java // 日期工具(如入学时间格式化)└─ Result.java // 操作结果(如"添加成功"、"学号不存在")
-
阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。
- 4.1 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
- 4.2 类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO
- 4.3 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
- 4.4 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
- 4.5 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
- 4.6 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。
- 4.7 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。