[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

相关推荐

  • 数据库与数据库管理系统概述

    “`markdown title: 数据库与数据库管理系统概览date: 2024/12/7updated: 2024/12/7author: cmdragon excerpt:在数字化时代,数据的价值日益凸显,成为企业与组织的宝贵资源。数据库及其管理系统(DBMS)是实现数据高效存储、管理与应用的关键技术。本文将深入探讨数据库的基本概念、特性,DBMS的…

    2024 年 12 月 24 日
    45600
  • Java 同步锁性能的最佳实践:从理论到实践的完整指南

    目录 一、同步锁性能分析 (一)性能验证说明 1. 使用同步锁的代码示例 2. 不使用同步锁的代码示例 3. 结果与讨论 (二)案例初步优化分析说明 1. 使用AtomicInteger原子类尝试优化分析 2. 对AtomicInteger原子类进一步优化 3. 结论说明(LongAdder原理理解体会) 二、回顾Java锁优化 (一)synchronize…

    2025 年 1 月 11 日
    60700
  • Java StampedLock:实现原理与最佳实践

    Java StampedLock:实现原理与最佳实践 1. 引言 2. StampedLock概述 2.1 什么是StampedLock? 2.2 核心特性 3. StampedLock的三种模式详解 3.1 写锁(Write Lock) 3.2 悲观读锁(Pessimistic Read Lock) 3.3 乐观读(Optimistic Read) 4. …

    2025 年 1 月 6 日
    39300
  • 免费PDF合并工具使用指南

    引言 各位朋友好,我是技术分享者小徐。在日常的Java开发工作中,PDF文档处理是常见需求。高效处理PDF文件能显著提升我们的工作效率。当需要将多个PDF文档整合为一个时,很多工具要么收费要么操作复杂。今天为大家介绍一款简单易用的免费PDF处理工具。 零成本实现PDF合并 第一步:通过微信搜索功能,输入”PDF助手”进行查找,认准下方展示的小程序图标进入。也…

    2025 年 5 月 15 日
    18800
  • MySQL 面试题

    MySQL 中有哪几种锁? 全局锁、行级锁、自增锁、记录锁、外键锁、间隙锁、表级锁、元数据锁、意向锁、临键锁 MySQL 中有哪些不同的表格? 基础表、临时表、系统表、信息表、性能模式表、分区表、外键表、触发器使用的表、存储过程和函数使用的表 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别? 事务支持 InnoDB:支持事务处理,具有提…

    未分类 2025 年 1 月 12 日
    48300

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信