[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 Plus,真正麻烦的通常不是注册,而是订阅付款。官方付款页面对地区和卡种比较挑,所以很多人会改找支持微信、支付宝的充值方式。对于主要用 ChatGPT 来改写公众号文章的学生党,更稳妥的思路是用清楚的流程完成开通;晚上临时要交稿,同时更在意后续能否持续使用时,直接把会员开到自己的原账号里会更省心。

    未分类 2026 年 8 月 3 日
    3800
  • 使用Docker部署的基于binlog实现Mysql8

    概念 MySQL 基于 Binlog 的主从复制(Master-Slave Replication)是 MySQL 数据库中实现数据复制的一种机制。在这种复制模式下,主库(Master)记录所有对数据库的修改操作(如 INSERT、UPDATE、DELETE 等)到 二进制日志(Binlog) ,从库(Slave)则读取这些日志并执行相同的操作,从而保持与主…

    未分类 2025 年 1 月 13 日
    63600
  • 【蓝桥杯】第十六届Java B组竞赛解题实录

    题目A:高塔脱险 基础难度题目,主要考察基本编程能力,但需特别注意数值范围问题,使用int类型可能导致数据溢出正确答案:202 package competition.t1; import java.io.*; public class Solution { static class FastIO { static InputStreamReader rea…

    2025 年 5 月 13 日
    54700
  • ChatGPT Plus会员开通代充教程

    如果没有海外信用卡,ChatGPT Plus 充值会比注册账号更麻烦。 通过卡密充值,可以先用国内支付购买,再用 Session 确认当前 ChatGPT 账号。这样不需要切换共享账号,也能保留自己的使用记录和工作资料。

    未分类 2026 年 6 月 19 日
    11300
  • Claude Pro充值开通会员详细教程

    Claude Pro充值开通会员详细教程,适合国内用户使用微信支付宝为自己的账号完成充值、订阅或代充开通。

    未分类 2026 年 7 月 12 日
    9000

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信