[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中String类常用的各种方法

    Java中String类常见的方法 以下介绍字符串常见的几个方法。 介绍String类 在 Java 中,String 类是一个代表字符串的类,具有以下特性: 不可变性 :String 对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对 String 对象的修改操作实际上会创建一个新的 String 对象。 字符串池 :Java 中的字符串池是…

    未分类 2025 年 1 月 17 日
    25000
  • 常见的图形库对比 Echarts Highcharts AntV

    图形库 图形库 特点 图表类型 适用场景 依赖项 官网/文档 ECharts 功能丰富,支持大规模数据,交互性强 折线图、柱状图、饼图、地图、雷达图、散点图、热力图等 复杂数据可视化 无 https://echarts.apache.org/ Chart.js 简单易用,轻量级,支持响应式设计 折线图、柱状图、饼图、雷达图、散点图等 简单图表,快速开发 无 …

    未分类 2025 年 1 月 11 日
    37200
  • 扣子又出新功能,支持一键部署小程序,太强了!!

    大家好,我是R哥。 作为一名程序员和技术博主,我一直关注如何使用工具提升生产力,尤其是在内容创作和应用开发领域。 拿我开发一个微信小程序为例,我需要懂前端、后端、运维 等全栈技术,开发流程和技术栈复杂,我还需要购买云服务器、云数据库 等各种基础设施,资源耗费非常多。 虽然现在有如 Cursor 这样的革命性 AI 开发工具,它突破了传统开发模式的壁垒,非开发…

    2025 年 1 月 10 日
    55300
  • volatile关键字

    在Java中,使用volatile关键字修饰一个变量可以带来以下效果: 可见性 :volatile保证了变量的可见性,即当一个线程修改了volatile变量的值时,新值对于其他线程来说是立即可见的。这意味着,如果一个线程更新了volatile变量,其他线程在访问这个变量时,总是能看到最新的值。 禁止指令重排 :volatile变量的写操作对于后续的读操作是先…

    未分类 2025 年 1 月 6 日
    31000
  • 详解:促销系统整体规划

    大家好,我是汤师爷~ 今天聊聊促销系统整体规划。 各类促销活动的系统流程,可以抽象为3大阶段: B端促销活动管理:商家运营人员在后台系统中配置和管理促销活动,包括设定活动基本信息、使用规则、选择适用商品等核心功能。 C端促销活动参与:消费者在前台系统中浏览和参与促销活动,并在下单时获得相应的价格优惠或其他权益。 促销效果分析:通过促销活动的数据采集和分析功能…

    2025 年 1 月 12 日
    27100

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信