第三周-自主学习任务-面向对象基础与类的识别
1.什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?
修饰方法:当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static。用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用。
特性:static修饰的变量和方法,在类加载时即被初始化,可直接通过类名.变量名和类型.方法名进行调用。非static修饰的方法可以引用static 修饰的变量,在类加载过程中,static修饰的变量优先完成加载,所以当非static修饰的方法,完成加载后可以引用static 修饰的变量。
是否修饰:答案是否定的,student的表示是非静态的。
2.购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?
方法:核心方法是分析文字描述,对于问题中的名词可以用类和属性就行区分,对于问题中的动词可以用方法进行区分。
判定:既然要归属于这个类,那么肯定是类中包含了这一个属性或者方法,所以根据包含关系即可分出其归属。
3.一个项目中有很多类。项目中要怎么管理这些代码呢?
管理:首先可以根据类的作用进行区分,再者可以根据作用进行分支处理,最后可以通过包进行分装。
4.阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。
变量命名:采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;变量名不应以下划线或美元符号开头;尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型;不采用匈牙利命名法则,对不易清楚识别出该变量类型的变量应使用类型名或类型名缩写作其后缀;组件或部件变量使用其类型名或类型名缩写作其后缀;集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词做后缀。
类命名:类或接口名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免用缩写词(除非该缩写词被更广泛使用,像URL,HTML)。
方法命名:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;取值类可使用get前缀,设值类可使用set前缀,判断类可使用is(has)前缀。
常量命名:全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
包命名:包名一律小写, 少用缩写和长名;采用以下规则:
[基本包].[项目名].[模块名].[子模块名]...
不得将类直接定义在基本包下,所有项目中的类、接口等都应当定义在各自的项目和模块包中。
代码格式:单行太长需换行,方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间插入一个空行。相同业务逻辑和语义之间不需要插入空行。
OOP规约:避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。所有的覆写方法,必须加@ Override 注解。对外暴露的接口签名,原则上不允许修改方法签名,避免对接口调用方产生影响。接口过时必须加@Deprecated 注解,并清晰地说明采用的新接口或者新服务是什么。Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。(注意空指针)