课前任务列表
1.什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?
1.static:static关键字用于修饰成员变量和方法,使其属于类本身,而不是属于类的某个对象实例。
2.使用static修饰的方法的常见情况:
(1)工具方法:如果一个方法不依赖于对象的状态,其目的是执行一个操作,那么它可以被声明为static。例如,数学计算、字符串操作等。
(2)工厂方法:用于创建对象实例的方法,如果不需要访问类的非静态成员,可以声明为static。
(3)常量访问器:用于访问或修改类的静态字段的方法。
(4)不需要访问实例数据的方法:如果一个方法不需要访问任何非静态成员,它应该是静态的。
3.不用static修饰的方法特性:
(1) 依赖实例状态:这些方法通常需要访问或修改对象的实例变量。
(2)多态性:非静态方法可以被子类覆盖,以实现多态。
(3)需要访问非静态成员:非静态方法可以访问和修改类的非静态成员。
至于Student类的getName方法,通常情况下不应该用static修饰,因为getName通常用来获取特定Student对象的name属性,这是依赖于对象实例的状态的。每个Student对象都有自己的名字,因此getName方法需要访问非静态的实例变量。
public class Student {
private String name; // 实例变量
public Student(String name) {
this.name = name;
}
public String getName() { // 不应该用static修饰
return this.name;
}
}
2. 购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?
类的识别:
- 分析问题描述中涉及的实体或概念,这些通常可以被视为类。
- 寻找具有特定行为和属性的对象,它们可能代表类。
- 注意名词或名词短语,它们可能是类的名称。
方法的识别:
- 观察问题描述中描述的动作或操作,这些通常可以被视为方法。
- 寻找动词或动词短语,它们可能是方法的名称。
- 考虑类需要执行的功能,这些功能可能对应着方法。
属性的识别:
- 分析类的特征或数据,这些通常可以被视为属性。
- 寻找描述类的状态或信息的名词或名词短语,它们可能是属性的名称。
- 注意与类相关的具体数据项,它们可能是属性。
4.判定方法与属性属于哪个类
方法所属类:通常,执行该方法的主体对象所属的类就是该方法所属的类。例如,“添加商品到购物车” 这个方法,执行添加操作的是购物车,所以这个方法属于购物车类。
属性所属类:属性所描述的特征对应的业务实体所属的类就是该属性所属的类。比如商品的 “名称” 属性显然属于商品类,而购物车的 “总商品数量” 属性则属于购物车类。
3.一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。
- 使用唯一的命名空间:将项目中的类放在一个唯一的命名空间中,这样可以避免与其他项目中的类冲突。例如,可以使用公司名称、项目名称或特定的领域名称作为命名空间的前缀。
- 遵循命名约定:制定一套命名约定,确保类的名称具有一定的规范性和可读性。例如,可以使用驼峰命名法、下划线命名法或其他约定来命名类。
- 使用特定的前缀或后缀:为类添加特定的前缀或后缀,以区分它们与其他类。例如,可以使用项目名称、模块名称或特定的功能名称作为前缀或后缀。
- 避免使用通用名称:尽量避免使用过于通用的名称作为类名,以免与其他类冲突。选择具有特定含义和描述性的名称,能够更好地反映类的功能和用途。
- 进行命名冲突检查:在开发过程中,定期进行命名冲突检查,确保项目中的类名没有与其他类重名。可以使用工具或脚本来自动检查命名冲突。
管理项目中的类:
分层架构:
按照职责将类分为不同的层,如表示层、业务逻辑层、数据访问层等。
代码组织:
使用合理的文件和目录结构来组织类。例如,按照功能或模块来划分目录。
编码规范:
制定并遵循统一的编码规范,包括命名约定、代码格式等。
文档和注释:
为每个类和方法编写清晰的文档和注释,说明其职责和使用方式。
依赖管理:
使用依赖管理工具(如Maven、Gradle、npm)来管理项目依赖,避免版本冲突。
例如:
// 在 com.example.ecommerce 包下定义购物车类
package com.example.ecommerce;
public class ShoppingCart {
// 购物车相关属性和方法
}
// 在 com.example.ecommerce.user 包下定义用户类
package com.example.ecommerce.user;
public class User {
// 用户相关属性和方法
}
4.阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。
1. 变量命名
变量名应该使用有意义的英文词汇,第一个单词的首字母小写,后续单词的首字母大写,尽量简短且意义明确。
示例:int maxValue = 100;
2. 类命名
类名使用大写字母开头的驼峰命名法,名词形式,简洁明了。
示例:public class CustomerService { ... }
3. 方法命名
方法名使用动词开头的驼峰命名法,第一个单词的首字母小写,后续单词的首字母大写。
示例:public void calculateInterest() { ... }
4. 常量命名
常量名应该全部大写,单词之间用下划线分隔。
示例:public static final int MAX_COUNT = 10;
5. 包命名
包名统一使用小写字母,点分隔符之间有且仅有一个自然语义的英文单词。
示例:package com.alibaba.fastjson;
6.代码格式
代码中的大括号使用约定俗成的编码风格,左大括号前不换行,右大括号后换行。
if (condition) {
// 代码块
}
7. oop规约
避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器的解析成本。
示例:不推荐使用Customer.class.getName(),而推荐使用Customer.class.getSimpleName()。