当前位置: 首页 > news >正文

第03周 面向对象入门2与类的识别

什么样的方法应该用static修饰?
static修饰的方法属于类本身,而不是类的实例。通常适用于以下几种情况:
比如Java中的Math类,用于创建对象的静态方法。
不用static修饰的方法往往具有什么特?
非static修饰的方法,也称为实例方法,它们与类的实例紧密相关。特性如下:
依赖实例状态​​:实例方法可以访问和修改实例的属性(非static修饰的成员变量),其行为和结果往往取决于实例当前的状态。例如,一个Person类有一个age属性和一个introduce()实例方法,introduce()方法可能会输出包含当前age值的自我介绍,不同的Person实例调用该方法,输出可能不同,因为每个实例的age值可能不一样。通过实例调用​​:必须先创建类的实例,然后通过实例来调用实例方法。比如Person p = new Person(); p.introduce();,不能直接通过类名调用实例方法。
Student的getName应该用static修饰吗?
一般情况下,Student类的getName()方法不应该用static修饰。因为getName()方法通常是用于获取某个具体学生实例的姓名,姓名是学生实例的一个属性,不同学生实例有不同的姓名,它是依赖于实例状态的。如果将getName()方法用static修饰,那么它就无法访问实例的name属性(假设name是实例变量),也就无法准确获取某个具体学生的姓名了。
购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?
在购物车案例中,我们可以通过以下几种方式找出问题描述中的类、方法和属性:
​​名词提炼法​​:对于问题描述中的名词,很多时候可以抽象为类。比如“购物车”,很明显可以作为一个类,它代表了一个容器,用于存放商品等相关信息。再比如“商品”,也可以作为一个类,具有名称、价格、库存等属性。
动词提炼法​​:动词通常可以抽象为方法。例如“添加商品”“删除商品”“计算总价”等动作,分别可以对应购物车类中的addProduct()、removeProduct()、calculateTotalPrice()等方法。
​​分析实体特征​​:对于实体所具有的特征,可以抽象为属性。以商品为例,它的名称、价格、品牌等特征可以作为商品的属性。
方法与属性到底属于哪个类,要怎么判定呢?
名词对应类,动词对应方法。
一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?
Java中的包可以将类进行分组管理。我们可以为自己项目中的类定义独特的包名;按照一定的命名规范来命名类,使类名具有描述性和唯一性。
项目中类各种各样要怎么管理这些代码呢?举例说明
可以按照功能模块来管理类;
以一个电商项目为例:
用户模块​​:将所有与用户相关的类放在一个包下,如com.ecommerce.user。这个包下可以有User类(表示用户实体,包含用户名、密码等属性和相关方法)、UserRegistration类(用于处理用户注册逻辑)、UserLogin类(处理用户登录逻辑)等。

​​商品模块​​:com.ecommerce.product包下存放Product类(商品实体类)、ProductCategory类(商品分类类)、ProductService类(用于处理商品的业务逻辑,如查询、添加商品等)。

​​购物车模块​​:com.ecommerce.cart包下有Cart类(购物车类)、CartItem类(购物车项类,表示购物车中的单个商品项)等。

通过这样的包结构和类的组织方式,使得项目中的类层次清晰,易于管理和维护。
阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:
变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。
1,变量命名
成员变量​​:采用小写字母开头的驼峰命名法,如userName,清晰地表示变量的用途。

​​局部变量​​:同样使用小写字母开头的驼峰命名法,如count,用于在方法内部临时存储数据。

​​静态变量​​:采用大写字母加下划线的方式命名,如MAX_COUNT,突出其静态属性和全局性。

2,类命名
使用大写字母开头的驼峰命名法,且类名应是名词或名词短语,准确反映类的职责。例如OrderService类表示处理订单相关服务的类,ProductRepository类表示用于存储和检索产品数据的类。
3,方法命名
采用小写字母开头的驼峰命名法,方法名应是动词或动词短语,表明方法的操作行为。如getUserInfo()表示获取用户信息的方法,calculateDiscount()表示计算折扣的方法
4,常量命名
全部使用大写字母加下划线的方式命名,如PI_VALUE,用于表示固定不变的值。
5,包命名
采用小写字母的域名倒序方式,如com.example.project,确保包名的唯一性和可识别性。
6,代码格式
缩进​​:使用4个空格进行缩进,不使用制表符,保证代码在不同编辑器下显示一致。

​​换行​​:每行代码长度尽量不超过120个字符,当一行代码过长时,合理进行换行,增强代码的可读性。

​​花括号​​:左花括号{与语句在同一行,右花括号}单独占一行
7,OOP规约
避免使用过重的继承关系​​:优先使用组合而非继承来实现代码复用,减少类之间的耦合度。例如,一个汽车类,可以通过组合发动机、轮胎等部件类来实现功能,而不是让汽车类继承发动机类等。

​​重写方法时,子类方法访问权限不能低于父类​​:如果父类的某个方法是public的,子类重写该方法时也必须是public的,以保证多态性的正确实现。

​​使用final修饰不可变的类和方法​​:对于一些不应该被继承或重写的类和方法,使用final修饰,如String类就是final修饰的,保证了字符串的不可变性。

http://www.hskmm.com/?act=detail&tid=12346

相关文章:

  • 完整教程:启用GPU对模型进行推理,安装cuda toolkit cuDNN 9
  • 25秋周总结3
  • R ggplot2学习Nature子刊一张图,换数据即可用! - 指南
  • 2025-06-10.购买联想thinkpad 16p
  • 不会的好题总结
  • MySQL的Schema是什么? - 公众号
  • 与7无关的数
  • 推动安全研究多元化的10万美元捐赠计划
  • 20250919
  • 详细介绍:体验感满满—万物皆可插入
  • 支付宝的对账单下载
  • 1.6μVRMS超低噪声、20V、200mA低静态电流线性稳压器IBSP3030,替代LT3042、GM1201
  • [NOIP2022] 建造军营 解题报告
  • ABC 424 D-F 题解
  • 爱锋拍照工具 - 技术支持
  • 123213123
  • 详细介绍:项目首次推送到GitHub、指令步骤(下)
  • 计算多项式的值
  • 梦游天姥吟留别
  • Ubuntu操作便捷的系统下运用mysql、mongodb、redis
  • 03_Angular的突破性优势
  • 02_Angular现代前端框架的选型逻辑
  • 01_Angular时代的前端开发变革
  • 一堆杂题混刷
  • QQ 陌生人点赞 功能存在隐私泄露风险
  • Python爬虫实战——使用NetNut网页解锁器获取亚马逊电商资料
  • 2025 CCPC 网络赛
  • 安装windows11跳过账户登录
  • TCM安全学院夏季大促与免费网络安全课程发布
  • 博客园插入bilibili视频