尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

java相关问题:面向对象入门2与类的识别

java相关问题:面向对象入门2与类的识别
📅 发布时间:2026/6/19 21:25:34

1. 关于 static 修饰符

应该用 static 修饰的方法:

*不依赖于特定对象的实例状态:执行的操作不访问或修改对象的实例变量。
*工具类方法:常用于定义工具类中的方法,这些方法提供通用功能,无需创建类实例。
*工厂方法:用于创建并返回类的新实例。
*主方法:程序的入口点 main 方法必须是静态的,因为它在任何对象创建之前就被JVM调用。

不用 static 修饰的方法往往具有的特性:

*依赖于对象实例:它们必须通过类的实例来调用。
*操作对象的状态:它们可以访问和修改该对象的实例变量,代表了对象的行为或功能。
*与特定对象相关:方法的行为或结果可能因对象的状态不同而不同。

Student 的 getName 应该用 static 修饰吗?

答:不应该。getName 方法的目的是返回某个特定 Student 对象的姓名,每个 Student 对象的姓名都可能不同。这个方法强烈依赖于特定对象的状态,因此它必须是一个实例方法。

public class Student {private String name; // 实例变量,每个Student对象都有自己的name// 这是一个实例方法,必须通过对象调用,如 stu.getName()public String getName() {return this.name;}
// 如果错误地声明为static,会出现编译错误或逻辑错误
// public static String getName() {
//return name;
// 错误!静态方法无法访问非静态变量name
}
}

2. 购物车案例中的面向对象分析与设计

使用了什么方法将问题描述中的类、方法、属性找出来?

寻找类和属性:找出描述中的名词和名词短语。

*例如:“用户”、“商品”、“购物车”、“订单”、“价格”、“数量”等。
*“用户”、“商品”、“购物车”、“订单”是类。
*“价格”、“数量”是“商品”或“订单项”类的属性。

寻找方法:找出描述中的动词和动词短语。

*例如:“添加商品”、“查看购物车”、“计算总价”、“下单”等。
*“添加商品”是 ShoppingCart 类的一个方法。
*“计算总价”是 ShoppingCart 或 Order 类的一个方法。

方法与属性到底属于哪个类,要怎么判定呢?

判定归属的核心是职责驱动设计和信息专家模式:

信息专家模式:将职责(方法或属性)分配给拥有完成该职责所需信息的那个类。

问题:“谁拥有计算购物车总价所需的数据?”
答: ShoppingCart 对象拥有一个 List,而每个 CartItem 又拥有商品价格和数量。因此, calculateTotal() 方法应该属于 ShoppingCart 类。

高内聚低耦合:高:一个类应该专注于一个明确的职责,低:类与类之间不应过度依赖。

“商品”类的职责是管理商品信息,它不应该去处理购物车的逻辑。购物车的逻辑应该放在 ShoppingCart 类中。
简单来说就是:谁的数据,谁操作。

3. 类的命名与管理

怎样才能避免你项目中的类与别人编写的类同名呢?

*使用包,包是Java提供的命名空间机制,它就像是类的“姓氏”,可以有效避免命名冲突。
*使用唯一包名:通常采用域名倒写的规则来确保全球唯一性。

项目中类各种各样要怎么管理这些代码呢?举例说明。

*通过包和目录结构对类进行逻辑上的分门别类。这是一种物理上的代码组织方式。
*举例:一个电商项目
com.companyname.ecommerce (基包)
domain / model / entity:存放实体类(如 User, Product, Order, CartItem)
dao / repository:存放数据访问对象类,负责与数据库交互(如 UserDao, ProductRepository)
service:存放业务逻辑类(如 UserService, OrderService)
controller / web / servlet:存放Web层控制器类,处理HTTP请求(如 ProductController)
util:存放工具类(如 StringUtil, DateUtil)
config:存放配置类
exception:存放自定义异常类
(deepseek搜索)
这样,即使有100个类,也能通过清晰的包结构进行有效管理,方便查找和维护。

4.《阿里巴巴Java开发手册》编程规范

  1. 变量命名:代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name / _name / $name / name / name$
  2. 类命名:类名使用 UpperCamelCase风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。正例:UserDTO / XmlService / TcpUdpDeal
  3. 方法命名:方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase(小驼峰)风格。正例:localValue / getHttpMessage()
  4. 常量命名:常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。正例:MAX_STOCK_COUNT 反例:MAX_COUNT
  5. 包命名:包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式。正例:com.alibaba.ei.util
  6. 代码格式:如果是大括号内为空,则简洁地写成 {} 即可,不需要换行;如果是非空代码块,则:左大括号前不换行,后换行。右大括号前换行,后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
  7. OOP规约:所有 POJO 类属性必须使用包装数据类型。局部变量和方法参数使用基本数据类型。

相关新闻

  • EXCEL自动调整列宽的快捷键
  • 破解塔吊顶升高危难题!让事故率降 50%、审批快 70%
  • CF2086D Even String

最新新闻

  • DeepSeek V4硬件适配实录:昇腾910B与H100双轨训练逻辑
  • SAP BOM查询实战:从正查到反查的完整指南
  • 【2026年6月】热水离心泵厂家推荐指南 - 多才菠萝
  • Python图片压缩方法全解:从入门到进阶
  • 【JAVA毕设源码分享】基于SpringBoot的中华传统文化网站(程序+文档+代码讲解+一条龙定制)
  • 全国学历提升继续教育学习体验实录

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号