
目录题目介绍题目要求梳理完整可运行代码代码逐段详细解析1. 私有属性定义封装特性2. 无参构造方法详解3. 有参构造方法详解4. toString 方法重写详解5. getter / setter 方法详解6. main 方法业务逻辑详解输入输出演示核心知识点总结文末小结题目介绍本题是 Java 面向对象入门经典真题核心考察类的封装、私有属性定义、无参/有参构造方法、get/set 方法、toString 重写、数组对象遍历、逆序输出。通过本题可以彻底掌握面向对象三大基础能力封装特性、对象初始化、对象打印格式化是新手入门必刷核心题型。题目要求梳理1. 定义 Person 类私有属性严格顺序String name、int age、boolean gender、int id2. 无参构造方法打印固定语句并按格式输出四个属性默认值3. 有参构造方法对 name、age、gender 三个属性赋值4. 重写 toString 方法固定格式输出对象所有属性5. 为所有私有属性生成 get/set 方法6. main 方法读取 n 个对象信息批量创建对象逆序输出所有对象最后调用无参构造创建对象并打印。完整可运行代码import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); // 读取对象个数 int n sc.nextInt(); // 创建Person对象数组 Person[] persons new Person[n]; // 循环创建对象 for (int i 0; i n; i) { String name sc.next(); int age sc.nextInt(); boolean gender sc.nextBoolean(); persons[i] new Person(name, age, gender); } // 逆序遍历输出对象 for (int i n - 1; i 0; i--) { System.out.println(persons[i]); } // 调用无参构造创建对象并打印 Person emptyPerson new Person(); System.out.println(emptyPerson); } } class Person { // 严格按题目顺序定义私有属性 private String name; private int age; private boolean gender; private int id; // 无参构造方法 public Person() { System.out.println(This is constructor); // 按指定格式输出默认属性值 System.out.println(name , age , gender , id); } // 有参构造方法初始化name、age、gender public Person(String name, int age, boolean gender) { this.name name; this.age age; this.gender gender; } // 重写toString方法固定输出格式 Override public String toString() { return Person [name name , age age , gender gender , id id ]; } // 以下为所有属性get/set方法 public String getName() { return name; } public void setName(String name) { this.name name; } public int getAge() { return age; } public void setAge(int age) { this.age age; } public boolean isGender() { return gender; } public void setGender(boolean gender) { this.gender gender; } public int getId() { return id; } public void setId(int id) { this.id id; } }代码逐段详细解析1. 私有属性定义封装特性private String name; private int age; private boolean gender; private int id;面向对象核心思想封装。使用 private 修饰成员变量保证外部类无法直接访问、修改属性只能通过公开的 get/set 方法操作数据保证数据安全性。属性顺序严格遵循题目要求不允许调换顺序。属性默认值规则- 引用类型 String默认 null- 基本类型 int默认 0- 布尔类型 boolean默认 false2. 无参构造方法详解public Person() { System.out.println(This is constructor); System.out.println(name , age , gender , id); }构造方法特点方法名与类名完全一致、无返回值。无参构造在对象 new 创建且不传参时自动执行。本题要求先打印固定语句再按name,age,gender,id格式输出默认值无需手动赋值直接输出系统默认初始化值即可。3. 有参构造方法详解public Person(String name, int age, boolean gender) { this.name name; this.age age; this.gender gender; }有参构造用于对象创建时直接初始化属性。题目只要求对 name、age、gender 赋值id 不赋值因此 id 始终保留默认值 0。this 关键字作用区分局部参数和成员变量this.属性代表当前对象的成员变量。4. toString 方法重写详解Override public String toString() { return Person [name name , age age , gender gender , id id ]; }toString 是 Object 类原生方法作用是返回对象的字符串描述。如果不重写默认打印对象哈希地址无实际意义重写后可以自定义对象输出格式直观展示对象所有属性。当执行System.out.println(对象)时系统会自动调用该对象的 toString 方法。5. getter / setter 方法详解由于成员变量被 private 私有化外部无法直接访问必须提供公开的访问、修改入口getter获取私有属性的值布尔类型规范使用isXxx()命名setter修改私有属性的值实现外部对私有数据的可控修改。这是 Java 面向对象封装的标准写法也是企业开发、考试的强制规范。6. main 方法业务逻辑详解// 读取创建对象个数 int n sc.nextInt(); // 创建Person类型数组存储多个对象 Person[] persons new Person[n];首先读取用户输入的对象数量开辟对应大小的对象数组用于批量存储多个 Person 对象。// 循环录入数据批量创建对象 for (int i 0; i n; i) { String name sc.next(); int age sc.nextInt(); boolean gender sc.nextBoolean(); persons[i] new Person(name, age, gender); }循环读取每一行的姓名、年龄、性别调用有参构造方法初始化对象存入数组。// 逆序遍历输出 for (int i n - 1; i 0; i--) { System.out.println(persons[i]); }常规遍历是正序本题要求逆序输出所以循环从最后一个下标开始向前遍历依次打印对象。// 无参构造创建空对象并打印 Person emptyPerson new Person(); System.out.println(emptyPerson);最后调用无参构造触发默认值打印语句同时输出重写后的 toString 格式字符串完全匹配题目输出样例。输入输出演示输入3 a 11 false b 12 true c 10 false输出Person [namec, age10, genderfalse, id0] Person [nameb, age12, gendertrue, id0] Person [namea, age11, genderfalse, id0] This is constructor null,0,false,0 Person [namenull, age0, genderfalse, id0]核心知识点总结1. 封装private 私有化属性通过 get/set 方法对外提供访问入口保证数据安全。2. 构造方法无参构造用于默认初始化有参构造用于自定义初始化创建对象自动触发。3. toString重写自定义对象输出格式是Java调试、打印对象的必备技巧。4. 对象数组与逆序遍历可以批量管理多个对象灵活控制输出顺序。文末小结本题是面向对象的入门标杆题型几乎涵盖了新手必须掌握的所有基础语法类与对象、封装、构造方法、方法重写、数组对象、循环遍历。熟练掌握本题代码逻辑能彻底打通 Java 面向对象的基础认知为后续继承、多态、接口、抽象类学习打下扎实基础。