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

63笔记

一、面向对象核心基础概念

  1. 类与对象
    类:事物的抽象模板,用来归纳同一类事物共有的特征(成员变量 / 属性)与行为(成员方法)。
    对象:依照类模板实例化出来的具体实体。
    类的两大组成:
    成员变量(属性):用来保存事物特征,例如用户账号、密码、新闻标题;
    成员方法:用来定义事物可执行的动作,例如账号注册、账号登录、展示新闻列表。
  2. 封装(Encapsulation)
    核心规则:将类的成员变量使用private私有化,外部无法直接访问,依靠公共getter/setter方法实现属性取值、赋值。
    封装优势:约束字段访问权限、规避非法数据赋值、提升代码安全性与后期维护性。
    java
    public class User {
    // 私有成员变量
    private String username;
    private String password;
    // 获取用户名
    public String getUserName() {
    return username;
    }
    // 设置用户名
    public void setUserName(String username) {
    this.username = username;
    }
    }
  3. 构造方法
    语法规范:方法名和类名完全一致、无返回值修饰符;分为无参构造、有参构造两类。
    无参构造:默认空参,用来快速创建空属性对象;
    有参构造:实例化对象时直接给成员变量赋值,完成属性初始化。
    java
    // 用户有参构造方法
    public User(String username, String password) {
    this.username = username;
    this.password = password;
    }
  4. ArrayList 动态集合
    可以自动扩容的容器,动态存放多个引用类型对象,本次微头条项目用来批量存储注册用户、新闻数据。
    java
    // 创建用户集合容器
    ArrayList userList = new ArrayList<>();
    // 往集合存入用户对象
    userList.add(new User("Tom", "123"));
    二、微头条项目实体类代码解析
  5. News 新闻实体类
    成员属性:title(新闻标题)、content(新闻正文)、publishTime(发布时间)
    构造方法内通过日期工具类自动生成系统当前发布时间:
    java
    this.publishTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    对外暴露getTitle()、getPublishTime()两个取值方法,遵循封装思想。
  6. User 用户实体类
    成员属性:username(用户名)、password(登录密码)
    全字段提供 getter/setter 封装方法,用于项目注册、登录业务:
    注册逻辑:控制台录入账号密码→构建 User 对象→存入 ArrayList 用户集合;
    登录逻辑:遍历全部集合数据→比对账号密码→匹配成功记录登录状态。
    三、主程序 Main 代码架构说明
  7. Main 主类结构
    表格
    分类 作用说明
    静态集合 userList 充当简易数据库,持久化所有注册用户信息
    静态集合 newsList 统一存放所有发布的新闻实例
    静态成员 currentUser 标记当前已登录用户,为空代表未登录
    main 主方法 while 死循环驱动首页功能菜单
    register() 用户注册业务方法
    login() 账号登录校验方法
    publishNews() 新闻发布功能
    showNewsList() 全量新闻查看
  8. 项目核心功能代码汇总
    表格
    功能模块 关键代码
    循环遍历集合校验用户名 for (User u : userList)
    注册新增用户到集合 userList.add(new User(name,pwd))
    登录账号密码匹配 u.getUserName().equals(name) && u.getPassword().equals(pwd)
    保存登录用户状态 currentUser = u
    判断用户是否登录 if(currentUser == null)
    新增新闻存入集合 newsList.add(new News(title,content))
    普通 for 遍历新闻列表 for(int i=0;i<newsList.size();i++)
    三、当日知识点复盘总结
    ArrayList:不定长容器,实现对象批量存储,突破数组固定长度限制;
    封装:private私有化属性 + 公共 get/set,隔离外部直接操作成员变量;
    static 修饰:被 static 修饰的变量属于类,全局共用,跨方法共享数据;
    面向对象设计:拆分 User、News 两个独立实体类,各司其职,代码解耦;
    构造方法:new User(参数)、new News(参数)实例化对象并初始化字段。
    四、整体小结
    表格
    | 概念 | 核心作用 | 代码示例 |
    | --------- | ------- | ---------------------------------------- |
    | 类 | 抽象事物模板 | class User{} |
    | 对象 | 类的具体实例 | new User() |
    | 封装 | 数据安全防护 | private + getter/setter |
    | 构造方法 | 对象初始化赋值 | public User(String name){} |
    | ArrayList | 批量存对象 | ArrayList list = new ArrayList<>() |
    实训当日心得
    今日正式从面向过程编程转向面向对象开发,最大收获是理解了类与对象是现实事物的代码映射。之前写代码习惯把所有逻辑堆在 main 方法里,通过微头条分层练习,学会拆分实体类、封装数据、用集合模拟数据库。明白了封装不只是语法规范,更是项目后期迭代、数据安全的保障,后续练习继续巩固面向对象的设计思维。
http://www.zskr.cn/news/1459458.html

相关文章:

  • 高级java每日一道面试题-2026年01月21日-实战篇[Docker]-如何在 Kubernetes 中使用私有镜像仓库?imagePullSecret 如何配置?
  • 收藏必备!小白程序员快速掌握大模型:AI Agent 代码产出与架构质量平衡秘籍
  • 目前靠谱的TPO融合瓦厂家 - GrowthUME
  • 2026 年东北玉米种子哪家强?四家企业格局深度解析 - 勤劳的黄色小蜜蜂
  • 轻量化大模型工程实践:低延迟高保真LLM端侧部署指南
  • 多维度可视化分析,智能数据驱动全周期教学质量评估 - 玖叁鹿
  • 实战应用:基于快马平台与openhuman开发虚拟试衣演示系统
  • 鸿蒙Flutter实战:IndexedStack保持Tab页面状态
  • Vicuna-7B配置文件详解:优化模型参数提升对话质量
  • VisRAG-Ret性能优化秘籍:提升视觉检索效率的10个技巧
  • Rose/flan-t5-xxl-SFT与OpenMind框架:华为NPU上的高效AI推理方案
  • Vue3 + Element Plus 实战:用Composition API重构el-tabs动态加载表格(对比Vue2选项式API)
  • 【Git】-- 标签管理
  • 2026 泾县黄金回收靠谱商家推荐|铂金白银 K 金金条首饰回收价格与门店指南 - 同城好物推荐官
  • BetterJoy终极指南:如何让Switch控制器在PC上完美工作
  • TMS320F28P550SJ9学习笔记18:C2000Ware软件包导出一份empty工程
  • 逛遍杭州才明白:靠谱伴手礼不用贵,非遗杨先生糕点成出行标配 - 玖叁鹿
  • 新式杭州伴手礼出圈:摒弃老牌礼品定式,非遗杨先生糕点承包出行心意 - 玖叁鹿
  • 同态加密(Homomorphic Encryption, HE)
  • GreedyCoreset采样技术:PatchCore内存库压缩5.1倍的核心原理
  • GPT-4 Turbo与DALL-E 3实战能力深度解析
  • 终极宝可梦存档管理解决方案:PKSM完整使用指南
  • QGIS制图进阶:除了四色定理,你的行政区划图配色还能玩出哪些花样?(附样式文件)
  • 别再手动配角色了!用PFCG批量分配Fiori磁贴权限(以Manage Banks为例)
  • 告别重复劳动:用快马平台的ai能力生成高效开发工具函数
  • MATLAB图像缺陷检测入门实战包:含12张实拍样图、带注释代码与坐标标注表
  • Python vs MATLAB:手把手教你实现信号波形特征提取(附完整代码与避坑指南)
  • 微软拼音中 通过注册表快速添加小鹤双拼
  • 别再只盯着M.2了!工控机里那个‘小插槽’MiniPCIe,到底能接多少种宝贝?
  • 别再只会录屏了!用FFmpeg的gdigrab和x11grab,5分钟搞定Windows/Linux桌面精准捕获