当前位置: 首页 > news >正文

Java中的继承及相关概念

在 Java 中,继承是一种允许一个类继承另一个类的特性。通过继承,子类可以获取父类的属性和方法,这有助于减少代码冗余并提高代码的可维护性。以下是关于文件内容的相关分析和知识点总结:

一、继承的核心概念

1.继承的语法

  • Java 中的继承通过 extends 关键字实现,基本语法如下:

class ParentClass {// 父类代码
}class ChildClass extends ParentClass {// 子类代码
}
  • 子类会自动继承父类的非私有属性和方法

2.方法的继承,重载与重写

  • 在继承中,子类可以继承父类中的方法和属性。例如,在 BBB.java 中,BBB 类继承了 AAA 类的 testA 方法(通过 super.testA() 调用) 文件内容在下方

  • 子类也可以重写父类的方法。在 BBB.java 中,BBB 类重写了父类的 testA 方法,使其具有不同的实现

  • 一个类下面可以有重名的方法,只要传参不一样就可以,也就是传参的类型或者数量不相同就可以在里面执行不同的功能,这就是方法的重载

3.构造器的调用

  • 子类在创建对象时,会自动调用父类的无参构造器(如果父类有无参构造器)。如果父类没有无参构造器,则子类需要显式调用父类的带参构造器,如 BBB.java 中的 super(name)

4.继承层次

  • Java 只支持单继承,即一个子类只能继承一个父类。这是为了避免多重继承可能带来的复杂性问题,如 “菱形继承” 问题(Diamond Problem)

  • 例如,BBB.java 只能继承自 AAA.java,不能同时继承多个父类

二、相关代码示例及分析

1. 示例:AAA.java

package com.qcby;public class AAA {public void testA() {System.out.println("该方法当中有很多逻辑运算----》AAA");}public AAA(String name) {// 父类带参构造器}
}
  • AAA 类定义了一个方法 testA 和一个带参构造器

2. 示例:BBB.java

package com.qcby;public class BBB extends AAA {public void testA() {System.out.println("该方法当中有很多逻辑运算----》BBB");}public void name() {super.testA();   // 调用父类的方法testA();         // 调用子类自己的方法}public BBB(String name) {super(name); // 调用父类的带参构造器}
}
  • BBB 类继承了 AAA 类,并重写了 testA 方法

  • name 方法中,通过 super.testA() 调用了父类的 testA 方法,展示了如何在子类中调用父类的方法

  • 子类的构造器调用了父类的 super(name),确保父类的初始化

3. 示例:Test.java(继承测试)

package com.qcby;public class Test {public static void main(String[] args) {BBB bbb = new BBB("Example");bbb.name(); // 输出:// 该方法当中有很多逻辑运算----》AAA// 该方法当中有很多逻辑运算----》BBB}
}
  • main 方法中,创建了 BBB 类的对象,并调用了 name 方法,演示了继承和方法调用的过程

三、静态初始化与构造函数调用顺序

1. 示例代码:Demo.java

package stack;public class Demo {public Demo(String aa) {System.out.println("====" + aa);}static {System.out.println("11");}public static Demo demo = new Demo("+++");static {System.out.println("22");}public static void main(String[] args) {Demo demo = new Demo("----");}
}

2. 运行结果

11
11
===+
22
===-

3. 分析

  • 静态块的执行顺序:静态块在类加载时执行,且按照代码中出现的顺序依次执行

    • Demo 类中,有两个静态块和一个静态变量初始化。静态块的执行顺序是:

      • 首先执行第一个静态块(System.out.println("11");

      • 然后初始化静态变量 demo = new Demo("+++");,这会触发 Demo 类的构造函数执行

      • 接着执行第二个静态块(System.out.println("22");

  • 构造函数的调用顺序:构造函数在对象创建时调用。在 main 方法中,调用 new Demo("----"); 时:

    • 首先执行 Demo 类的构造函数,输出 ====----

4. 总结

  • 静态块用于类的初始化,执行顺序按照代码中的位置顺序。

  • 构造函数用于对象的初始化,在创建对象时执行。

  • 类加载过程中,静态块和静态变量初始化的顺序会影响程序的输出。

四、关键知识点总结

概念说明
继承语法使用 extends 关键字实现,子类继承父类的非私有属性和方法。
方法重写子类可以重写父类的方法,方法名、参数列表必须相同,实现不同。
构造器调用子类创建对象时,需调用父类的构造器(super)初始化父类成员。
Java 单继承特性一个子类只能继承一个父类,避免多重继承的复杂性。
静态块与构造函数静态块用于类初始化,按代码顺序执行;构造函数用于对象初始化,在对象创建时调用。

五、实例代码与运行结果

1. 继承测试(Test.java)

package com.qcby;public class Test {public static void main(String[] args) {BBB bbb = new BBB("重写");bbb.name();bbb.testA();bbb.run();bbb.run("方法重载");}
}

2. 运行结果

该方法当中有很多逻辑运算----》AAA
该方法当中有很多逻辑运算----》BBB
该方法当中有很多逻辑运算----》BBB
该方法当中有很多逻辑运算----→BBB

3. 分析

  • 调用 name 方法时:

    • 先通过 super.testA() 调用父类的 testA 方法。

    • 再调用子类的 testA 方法。

  • 调用 run 方法时,展示了方法重载的特性。

六、总结

  • 继承是 Java 中面向对象编程的重要特性,允许我们扩展类的功能,实现代码复用。通过继承,子类可以获取父类的属性和方法,并在此基础上添加自己的特性

  • super 关键字 在继承中扮演了重要角色,它可以用来调用父类的构造器、方法和属性

  • 注意 Java 的单继承特性,避免过度使用继承,以保持代码的清晰性和可维护性

  • 方法重载和重写 是继承机制中的常见概念,理解它们的区别和使用场景对于编写高质量的 Java 代码至关重要

  • 静态块和构造函数的调用顺序 在类和对象的初始化过程中起着关键作用,需要根据实际需求合理安排代码

希望这篇博客能够帮助你更好地理解 Java 中的继承机制以及相关知识点!如有任何疑问,欢迎在评论区留言讨论。


http://www.mrgr.cn/news/89949.html

相关文章:

  • 基于HTML5 Canvas 的盖楼游戏
  • Element UI 表单源码原理
  • 人工智能A*-启发式函数、增量式 A* 算法
  • kafka服务端之控制器
  • UE制作2d游戏
  • 全能型免费内网穿透工具,全面支持macOS、Windows、Linux及Docker系统
  • .NET Core 8 Blazor 和 Vue 3 技术构建网
  • 微信小程序案例2——天气微信小程序(学会绑定数据)
  • Vite+TS项目中配置路径别名
  • OC-Block
  • 构建Ubuntu unminimized的docker镜像
  • 【前端】打造自己的hexo博客_hexo一本通
  • 使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8
  • Vite 打包原理
  • 【11天从零基础入门flask】第 6 章:模板优化
  • 激活函数篇 03 —— ReLU、LeakyReLU、ELU
  • 程序员也可以这样赚钱
  • Vite 为什么快,是怎么打包的
  • sqli-lab靶场学习(五)——Less15-17(post方法盲注、修改密码)
  • 深度剖析 Redisson 分布式锁:原理、实现与应用实践
  • mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别
  • 深入探究 C++17 std::is_invocable
  • 计算机毕业设计Tensorflow+LSTM空气质量监测及预测系统 天气预测系统 Spark Hadoop 深度学习 机器学习 人工智能
  • 虚拟局域网之详解(Detailed Explanation of Virtual Local Area Network)
  • 参数映射服务完整解决方案
  • A股level2高频数据分析20250205