[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

相关推荐

  • Java笔记(一)内部类

    这是关于我对内部类理解的笔记,可能写的不怎么好,所以虚心接受大佬的指导 内部类(Nested Class) 定义在一个类中的另一个类被叫做内部类(Inner Class), 内部类有四种类型成员内部类、静态内部类、局部内部类、匿名内部类 成员内部类、局部内部类、匿名内部类中 成员内部类 “`java // inner class public class …

    未分类 2025 年 1 月 7 日
    42100
  • 交易系统:线上交易系统流程详解

    大家好,我是汤师爷~ 今天聊聊线上交易系统流程详解。 线上交易系统为新零售连锁商家提供一站式线上交易解决方案。其核心目标是,通过数字化手段扩大商家的服务范围,突破传统门店的地理限制。系统支持电商、O2O等多种业务形态,为商家提供全方位的线上运营能力。 线上交易系统包含两个核心流程:正向交易流程、逆向交易流程。 正向交易流程负责处理从订单创建到完成的标准交易过…

    2024 年 12 月 31 日
    41400
  • Intellij IDEA激活破解教程(IDEA激活破解码)

    IntelliJ IDEA 是业内公认的高级 Java 集成开发环境,被许多专业人士视为 Java 开发的首选工具。此篇指南将引导您使用脚本方法免费激活 IntelliJ IDEA 和 Jetbrains 其他产品,适用于 2021 年及以后的版本,包含最新版本。 安装过程 您可直接在 JetBrains 官方网站获取 IntelliJ IDEA 的最新版本…

    未分类 2024 年 7 月 10 日
    1.0K00
  • manim边学边做–改变动画速度

    ChangeSpeed类是Manim库中用于修改动画速度的类。 它提供了一种灵活的方式来控制动画的播放速度,使动画在不同时间段内以不同的速度播放,从而创造出更加丰富多样的动画效果。 比如,在创建包含多个元素动画的场景中,通过ChangeSpeed可以精确控制不同元素在不同时间点的移动速度,实现复杂的动画节奏编排。 1. 动画概述 与之前介绍的那些动画类不同,…

    2025 年 1 月 6 日
    38600
  • python SQLAlchemy ORM——从零开始学习 01 安装库

    01基础库 1-1安装 依赖库:sqlalchemy “`python pip install sqlalchemy #直接安装即可 “` 1-2导入使用 这里讲解思路【个人的理解】,具体写其实就是这个框架: 导入必要的接口【有创建engine以及declarative_base】 通过create_engine接口创建engine,根据翻译可以翻译成引…

    2025 年 1 月 12 日
    44800

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信