课前问题列表
1.什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?
- 适合用 static 修饰的方法:
工具类方法(如Math.abs())、工厂方法、不需要访问实例变量 / 方法的方法、单例模式的获取实例方法等,这类方法通常与类本身相关而非某个实例。 - 不用 static 修饰的方法(实例方法)特性:
依赖于类的实例存在,可访问实例变量和其他实例方法,能通过this关键字引用当前对象,行为可能因实例状态不同而变化。 - Student 的 getName 是否用 static:
不应该。getName()是获取某个学生实例的姓名,依赖具体实例,属于实例方法。
2.购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?
- 提取方法:
通过需求分析识别实体(如 “商品”“购物车”“用户”),再确定每个实体的属性(如商品的 id、名称)和行为(如购物车的添加商品方法)。 - 类的归属判定:
- 属性:看哪个实体 “拥有” 这个数据(如 “商品价格” 属于Product类)
- 方法:看哪个实体 “执行” 这个行为(如 “添加商品” 属于ShoppingCart类)。
3. 一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。
- 避免类名冲突:
- 使用包(Package)进行命名空间隔离,如自己的类放在com.mycompany.order,他人的类可能在com.othercompany.order。
- 代码管理方式:
- 按功能模块划分包(如user、order、payment)。
- 按层次划分(如controller、service、dao)。
- 举例:电商项目中,用户相关类放在com.shop.user,订单相关类放在com.shop.order。
4. 阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:
变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。
- 1变量命名:成员变量用 lowerCamelCase(如userName),避免下划线。
- 2类命名:用 UpperCamelCase(如UserService),抽象类前缀加Abstract(如AbstractUser)。
- 3方法命名:用 lowerCamelCase(如getUserInfo()),动词开头(如add、delete)。
- 4常量命名:全大写 + 下划线(如MAX_COUNT),不允许修改。
- 5包命名:全小写,用域名反转(如com.alibaba.middleware)。
- 6代码格式:左大括号不换行,与代码同行(如if (a>0) {)。
- 7OOP 规约:避免在构造方法中调用非静态方法,防止多态引发问题。