Java类和对象设计
·
Java对象:从基础到实践
实例化对象
在Java中,实例化对象是通过new关键字调用类的构造函数完成的。例如:
ClassName objectName = new ClassName();
构造函数可以重载,支持不同参数列表。实例化过程会在堆内存中分配空间并初始化对象属性。
初始化对象
对象初始化可通过以下方式实现:
- 默认构造函数初始化
- 带参数的构造函数
- 初始化块(实例初始化块或静态初始化块)
public class Person {
private String name;
// 实例初始化块
{ name = "Default"; }
// 构造函数
public Person(String n) { name = n; }
}
使用对象
通过对象引用访问成员变量和方法:
Person p = new Person("Alice");
System.out.println(p.name); // 访问字段
p.sayHello(); // 调用方法
静态变量和方法
静态成员属于类而非实例:
- 静态变量通过
static修饰,所有实例共享同一内存 - 静态方法只能访问静态成员,不能使用
this
class Counter {
static int count = 0;
static void increment() { count++; }
}
清除对象
Java通过垃圾回收机制自动管理内存。可手动提示回收:
- 将对象引用设为
null - 调用
System.gc()(仅建议JVM执行回收)
应用程序与命令行参数
main方法接收命令行参数:
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg);
}
}
运行时通过java MainClass arg1 arg2传递参数。
实用案例:学生管理系统
class Student {
private String id;
private String name;
public Student(String id, String name) {
this.id = id;
this.name = name;
}
public void display() {
System.out.println("ID: " + id + ", Name: " + name);
}
}
包的定义与引用
包用于组织类层次:
- 定义包:在文件首行声明
package com.example.mypackage; - 引用包:使用
import com.example.mypackage.*;或具体类名
模块系统(Java 9+)
模块通过module-info.java定义:
module my.module {
requires other.module;
exports com.example.mypackage;
}
类及成员修饰符
- 类修饰符:
public,final,abstract - 成员修饰符:
private,protected,public,static,final - 方法修饰符:
synchronized,native,strictfp
类和对象实训任务
- 设计
BankAccount类,包含存款、取款和查询功能 - 实现
Book类管理系统,支持添加/删除书籍 - 创建静态工具类
MathUtils,提供常用数学函数 - 使用包组织电商系统的商品、订单和用户模块
综合示例:图书馆管理系统
package library;
public class Book {
private String isbn;
private String title;
public Book(String isbn, String title) {
this.isbn = isbn;
this.title = title;
}
// Getter/Setter方法省略
}
package library;
import java.util.ArrayList;
public class Library {
private static ArrayList<Book> books = new ArrayList<>();
public static void addBook(Book b) { books.add(b); }
public static void listBooks() {
for (Book b : books) {
System.out.println(b.getTitle());
}
}
}
对象设计原则
- 封装:隐藏内部实现细节
- 单一职责:每个类只负责一个功能
- 开闭原则:对扩展开放,对修改关闭
- 组合优于继承
高级特性
- 对象克隆:实现
Cloneable接口 - 序列化:实现
Serializable接口 - 注解:使用
@Override等元数据 - 反射:运行时获取类信息
通过系统学习和实践这些概念,可以构建健壮的面向对象Java应用程序。建议从简单案例开始,逐步增加复杂度,最终实现模块化、可维护的企业级代码结构。
更多推荐

所有评论(0)