一、面向对象核心基础概念
- 类与对象
类:事物的抽象模板,用来归纳同一类事物共有的特征(成员变量 / 属性)与行为(成员方法)。
对象:依照类模板实例化出来的具体实体。
类的两大组成:
成员变量(属性):用来保存事物特征,例如用户账号、密码、新闻标题;
成员方法:用来定义事物可执行的动作,例如账号注册、账号登录、展示新闻列表。 - 封装(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;
}
} - 构造方法
语法规范:方法名和类名完全一致、无返回值修饰符;分为无参构造、有参构造两类。
无参构造:默认空参,用来快速创建空属性对象;
有参构造:实例化对象时直接给成员变量赋值,完成属性初始化。
java
// 用户有参构造方法
public User(String username, String password) {
this.username = username;
this.password = password;
} - ArrayList 动态集合
可以自动扩容的容器,动态存放多个引用类型对象,本次微头条项目用来批量存储注册用户、新闻数据。
java
// 创建用户集合容器
ArrayListuserList = new ArrayList<>();
// 往集合存入用户对象
userList.add(new User("Tom", "123"));
二、微头条项目实体类代码解析 - News 新闻实体类
成员属性:title(新闻标题)、content(新闻正文)、publishTime(发布时间)
构造方法内通过日期工具类自动生成系统当前发布时间:
java
this.publishTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
对外暴露getTitle()、getPublishTime()两个取值方法,遵循封装思想。 - User 用户实体类
成员属性:username(用户名)、password(登录密码)
全字段提供 getter/setter 封装方法,用于项目注册、登录业务:
注册逻辑:控制台录入账号密码→构建 User 对象→存入 ArrayList 用户集合;
登录逻辑:遍历全部集合数据→比对账号密码→匹配成功记录登录状态。
三、主程序 Main 代码架构说明 - Main 主类结构
表格
分类 作用说明
静态集合 userList 充当简易数据库,持久化所有注册用户信息
静态集合 newsList 统一存放所有发布的新闻实例
静态成员 currentUser 标记当前已登录用户,为空代表未登录
main 主方法 while 死循环驱动首页功能菜单
register() 用户注册业务方法
login() 账号登录校验方法
publishNews() 新闻发布功能
showNewsList() 全量新闻查看 - 项目核心功能代码汇总
表格
功能模块 关键代码
循环遍历集合校验用户名 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 | 批量存对象 | ArrayListlist = new ArrayList<>() |
实训当日心得
今日正式从面向过程编程转向面向对象开发,最大收获是理解了类与对象是现实事物的代码映射。之前写代码习惯把所有逻辑堆在 main 方法里,通过微头条分层练习,学会拆分实体类、封装数据、用集合模拟数据库。明白了封装不只是语法规范,更是项目后期迭代、数据安全的保障,后续练习继续巩固面向对象的设计思维。
