解锁Java面向对象进阶:从包管理到多态的完备指南

[复制链接]
发表于 2026-5-26 21:39:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、包与导包:代码的“文件夹管理术”
在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“齐备皆对象”的筹划哲学。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表