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
类和对象实训任务
  1. 设计BankAccount类,包含存款、取款和查询功能
  2. 实现Book类管理系统,支持添加/删除书籍
  3. 创建静态工具类MathUtils,提供常用数学函数
  4. 使用包组织电商系统的商品、订单和用户模块
综合示例:图书馆管理系统
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应用程序。建议从简单案例开始,逐步增加复杂度,最终实现模块化、可维护的企业级代码结构。

更多推荐