解锁Java面向对象进阶:从包管理到多态的完整指南
一、包与导包:代码的“文件夹管理术”
在Java中,包(Package)本质是文件夹,用于组织类文件,避免命名冲突。定义包需在代码首行写 package 包名; (如 package com.example.entity; ),对应文件路径为 com/example/entity 。
导包(Import)则是“引用外部工具”:当使用其他包的类时,需通过 import 包名.类名; 或 import 包名.*; (导入包下所有类)引入。但有2种情况无需导包:
类在同一包内(如 TestPerson 与 Person 同属 com.example.entity 包);
类属于 java.lang 包(如 String 、 System ),Java自动导入。
二、访问权限:类的“隐私保护机制”
Java通过4种访问修饰符控制类成员的可见性,核心是 public 、 private 和默认(default):
public :所有类都能访问(如 public class Person 可被任意包调用)。
private :仅本类内部可访问,外部无法直接修改(如 private int age ,需通过 getter/setter 间接操作)。
default (无修饰符):仅同包内可访问,跨包则不可见。
示例: Person 类中 private String name ,外部类 TestPerson 无法直接访问 p.name ,需通过 p.getName() 获取。
三、Getter/Setter:封装的“安全阀门”
为保护 private 成员变量,Java提供 getter (获取值)和 setter (设置值)方法:
setter :对赋值逻辑做校验(如年龄不能为负数)。
getter :安全返回变量值,避免外部直接修改。
IDEA快捷生成:右键代码区→ Generate → Getter and Setter →全选确认。
示例:
public class Person {
private int age;
public void setAge(int age) {
if (age < 0) age = 0; // 校验逻辑
this.age = age;
}
public int getAge() { return age; }
}
四、继承:代码复用的“父子关系”
继承( extends )让子类自动拥有父类的非私有成员(属性、方法),实现“子类是父类的一种”逻辑(如 HeiXiong extends YaoGuai ,黑熊怪是妖怪的一种)。
作用:简化代码(父类代码复用)、扩展功能(子类新增方法)。
语法: public class 子类 extends 父类 {}
示例:父类 YaoGuai 有 chiRen() 方法,子类 HeiXiong 继承后可直接调用,也可新增 tou() 方法扩展功能。
五、Super关键字:父类的“专属通道”
super 代表父类对象的引用,用于:
访问父类成员: super.父类属性 / super.父类方法() (区分子类同名成员)。
调用父类构造方法: super(参数) 必须在子类构造方法首行,确保父类先初始化。
示例:子类 SunWuKong 构造方法中 super("孙悟空") ,调用父类 Hero 的构造方法初始化 name 。
六、方法重写:子类的“个性化改造”
方法重写(Override)是子类对父类方法的重新定义,需满足:方法名、参数列表、返回值类型完全一致(“三同”),且访问修饰符≥父类(如父类 protected ,子类可 public )。
示例:父类 LiYuan 的 makeCountry() 输出“李渊建立唐朝”,子类 LiShiMin 重写后输出“李世民开创贞观之治”。
七、多态:同一行为的“多种形态”
多态是“父类引用指向子类对象”,核心是向上转型( 父类 变量 = new 子类(); )和方法重写的结合。
向上转型: Animal a = new Dog(); ( Dog 是 Animal 子类),调用 a.eat() 时,实际执行 Dog 的 eat() 方法(动态绑定)。
向下转型:需强制转换( Dog d = (Dog)a; ),但可能引发 ClassCastException (如 a 实际是 Cat 时)
示例: Animal 类的 eat() 方法, Dog 和 Cat 分别重写为“狗吃骨头”“猫吃鱼”,通过 Animal a = new Dog(); a.eat(); 实现多态。
八、实战:游戏类的多态设计
通过“游戏启动”案例理解多态应用:
父类 Game 定义 start() 、 play() 、 end() 方法。
子类 LOL 、 DNF 重写 play() 方法(如 LOL 输出“上单抢,快乐儿童劫”)。
客户端 Client 通过 Game g = new LOL(); g.play(); 实现多态,无需修改代码即可扩展新游戏(如新增 CS 类继承 Game )。
总结
从包管理到多态,Java面向对象的进阶之路围绕“封装、继承、多态”三大特性展开。掌握这些核心概念,不仅能写出结构清晰、易维护的代码,更能理解Java“一切皆对象”的设计哲学。

浙公网安备 33010602011771号