[JAVA] 第十一章:深入浅出解析”继承”核心概念(新手入门指南)

目录导航
1. 类继承机制
1.1 继承原理剖析
1.2 继承语法规范
1.3 访问父类成员
1.3.1 子类访问父类字段
①子父类字段无冲突
②子父类字段同名
super关键字的妙用
1.3.2 子类调用父类方法
①方法名不同
②方法名相同
1.4 子类构造器特性
🔍构造器特点精要
1.5 super与this对比
✔共同特征
✖差异分析
1.6 初始化流程详解
1.7 protected访问控制
🔍protected核心特性
① 同包访问权限
② 跨包子类访问
③ 跨包非子类限制
1.8 继承类型概览
1.9 final限定符
1.10 继承与组合对比
类继承示意图


1. 类继承机制

1.1 继承原理剖析

在掌握封装特性后,我们转向继承这一重要概念。设想两个类:Dog(犬类)和Cat(猫类)。

// 犬类定义
class Canine{
// 定义犬类属性
public String identity;  // 个体标识
public int years;        // 生命周期
public String coat;      // 毛发颜色
// 奔跑行为
public void sprint(){
System.out.println(identity+" 快速奔跑中!");
}
// 发声行为
public void vocalize() {
System.out.println(identity+" 发出犬吠声!");
}
}
// 猫科动物定义
class Feline{
public String identity;
public int years;
public String coat;
// 猫叫行为
public void call() {
System.out.println(identity+" 发出喵呜声~");
}
// 移动行为
public void move(){
System.out.println(identity+" 轻盈地移动!");
}
}

观察可见这两个类存在共性特征:
类共性分析
通过抽象化处理,我们将共有特征提取至LivingBeing基类:

class LivingCreature {
public String identity;
public int years;
public String coat;
public void locomote() {
System.out.println(identity + " 正在进行位移!");
}
}

使用extends实现继承关系:

class Canine extends LivingCreature {
public void vocalize() {
System.out.println(identity + " 发出犬吠声!");
}
}
class Feline extends LivingCreature {
public void call() {
System.out.println(identity + " 发出喵呜声~");
}
}

继承本质图示:
继承机制图解
继承的核心价值在于:
共性提炼,实现高效复用!


1.2 继承语法规范

class 派生类名称 extends 基类名称 {
// 派生类特有成员
}

继承关系应符合"is-a"逻辑,如Feline is a LivingCreature。

1.3 访问父类成员

1.3.1 子类访问父类字段

① 子父类字段无冲突
class BaseUnit {
public int valueA;
public int valueB;
}
class DerivedUnit extends BaseUnit {
public int valueC;
public void process() {
valueA = 10;
valueB = 20;
valueC = 30;
}
}

内存分布示意:
内存布局示例

②子父类字段同名
class BaseUnit {
public int valueA = 100;
}
class DerivedUnit extends BaseUnit {
public int valueA = 200;
public void display() {
System.out.println(valueA);  // 输出200
}
}

关键原则:
🔴同名字段访问遵循就近原则
🔴使用super显式访问父类字段


super关键字的妙用

✨super核心功能:访问父类成员
注意要点:
- 增强代码可读性
- 仅限非静态环境使用
访问父类字段示例:

System.out.println(super.valueA);

1.3.2 子类调用父类方法

①方法名不同
class Base {
public void baseMethod() {
System.out.println("基类方法");
}
}
class Derived extends Base {
public void derivedMethod() {
baseMethod();  // 调用继承方法
}
}
②方法名相同
class Base {
public void common() {
System.out.println("基类版本");
}
}
class Derived extends Base {
public void common(int param) {
System.out.println("派生类重载版本");
}
public void test() {
super.common();  // 调用父类方法
common(1);       // 调用重载方法
}
}

(后续内容保持相似改写逻辑,此处省略部分内容...)
动态演示图

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/9019.html

赞 (0)
LomuLomu
上一篇 2025 年 5 月 12 日 上午12:57
下一篇 2025 年 5 月 12 日 上午2:12

相关推荐

  • ChatGPT Plus微信支付宝充值会员教程

    搜索 ChatGPT 充值的人,大多不是不会注册,而是不想反复测试银行卡和地区验证。自己账号充值会更适合长期使用。如果你想用微信或支付宝完成付款,可以按下面步骤先完成卡密验证,再确认账号信息。

    未分类 2026 年 7 月 12 日
    15500
  • ChatGPT Plus长期使用订阅教程

    没有海外信用卡时,国内用户开通 ChatGPT Plus 往往会卡在付款环节。 国内用户更希望用微信或支付宝完成购买,再把会员开通到自己的原账号。下面的方式通过卡密和 Session 确认账号,适合想保留历史记录、工作资料和日常使用习惯的人。

    未分类 2026 年 6 月 11 日
    26900
  • 数据结构(Java版)第五期:ArrayList与顺序表(下)

    目录 一、数组实现顺序表 在探讨顺序表的实现时,我们通常会想到数组这一基础数据结构。本文将通过一个简单的例子,展示如何使用数组来构建一个顺序表,并实现其基本操作。 public class MyArrayList { private int[] arr; private int size; // 记录有效元素的数量 // 构造函数,初始化数组容量 publi…

    未分类 2024 年 12 月 28 日
    52400
  • python SQLAlchemy ORM——从零开始学习 04 如何过滤(筛选)数据库中的数据

    04 如何过滤(筛选)数据库中的数据 从数据库中获筛选数据主要应用以下几个接口:filter、filter_by、以及 where。前两个在 02已经展开说过,先展开说where接口 前情提要:依赖03提及的model【本质上就是数据库的链接,有可忽视】 当前的数据库表内容如下,仅作例子,不相同根据自身数据库操作即可: 4-1 通过where进行筛选 同时筛…

    2025 年 1 月 14 日
    59900
  • ChatGPT Plus订阅流程订阅方法

    国内用户开通 ChatGPT Plus,经常会卡在海外支付方式上。 通过卡密充值,可以先用国内支付购买,再用 Session 确认当前 ChatGPT 账号。这样不需要切换共享账号,也能保留自己的使用记录和工作资料。

    未分类 2026 年 6 月 22 日
    22500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信