继承的思想与extends关键字继承是指对每个类的共性进行抽取好处是可以达到代码的复用。我们看这两个类public class Dog { String name; int age; public void eat(){ System.out.println(this.name正在吃饭); } public void shout(){ System.out.println(this.name正在汪汪叫); } } public class Cat { String name; int age; public void eat(){ System.out.println(this.name正在吃饭); } public void mimi(){ System.out.println(this.name正在喵喵叫); } }可以看到Dog类和Cat都有重复的代码那么我们就可以对它们的共性进行抽取为一个新的类Animal,这就是继承的思想。public class Animal{ String name; int age; public void eat(){ System.out.println(this.name正在吃饭); } }我们将Animal类称之为父类、基类或超类将Dog类和Cat类称之为子类或派生类子类继承父类的成员变量和方法。所以通过子类就可以访问父类被public和protected修饰的成员变量和方法default修饰的只允许同包子类访问private修饰的子类不可以访问public class Animal { String name; int age; public void eat(){ System.out.println(this.name正在吃饭); } } public class Dog extends Animal{ public void shout(){ System.out.println(this.name正在汪汪叫); } } public class Cat extends Animal{ public void mimi(){ System.out.println(this.name正在喵喵叫); } }可以看到继承需要使用关键字extends子类extends父类public class Main { public static void main(String[] args) { Dog dognew Dog(); Cat catnew Cat(); //子类直接调用父类成员变量和方法 dog.name旺财; dog.age5; dog.eat(); //子类调用自己的方法 dog.shout(); System.out.println(dog.name); System.out.println(dog.age); } }子类父类同名成员和super关键字同名成员变量的访问那么如果子类和父类出现同名的成员变量呢结论就近原则优先访问自己的自己没有再访问父类的。public class Base { int a1; int c; } public class Derieved extends Base{ int a11; int b; public void func(){ System.out.println(this.a); } } public class Main { public static void main(String[] args) { Derieved derievednew Derieved(); derieved.func(); } }可以看到最终输出的是子类的a值但父类的a变量我们该怎么访问呢这时我们可以利用super进行访问public class Derieved extends Base{ int a11; int b; public void func(){ System.out.println(子类athis.a); System.out.println(父类asuper.a); } }总结this既可以访问父类又可以访问子类当父类子类成员变量同名时只访问子类。super用来访问父类成员变量同名成员方法的访问如果子类和父类出现同名的成员方法呢public class Base { int a1; int c; public void test() { System.out.println(Base:test()); } } public class Derieved extends Base{ int a11; int b; public void test() { System.out.println(Derived:test()); } }我们在父类和子类中定义名字参数返回值完全相同的方法此时子类对象是会调用父类还是子类方法呢public class Main { public static void main(String[] args) { Derieved derievednew Derieved(); derieved.test(); } }可见依旧遵循就近原则优先调用子类自己的方法。我们将在子类中定义与父类返回类型名字参数列表都一样的方法称为方法的重写那么父类方法被重写后就无法调用了吗不是的和先前的同名成员变量一样我们依旧可以在子类中使用super关键字调用父类方法。public class Base { int a1; int c; public void test() { System.out.println(Base:test()); } } public class Derieved extends Base { int a 11; int b; public void test() { System.out.println(Derived:test()); } public void func() { this.test();//this调用子类自己的test() super.test();//super调用父类的test() } } public class Main { public static void main(String[] args) { Derieved derievednew Derieved(); derieved.func(); } }如果我们在父类和子类中定义名字相同但参数不同的方法此时就构成了方法的重载所以理所应当会根据参数选择合适的方法调用public class Base { int a1; int c; public void test()//没有参数 { System.out.println(Base:test()); } } public class Derieved extends Base{ int a11; int b; //有形参 public void test(int A) { System.out.println(Derived:test()); } public void func(){ System.out.println(子类athis.a); System.out.println(父类asuper.a); } }public class Main { public static void main(String[] args) { Derieved derievednew Derieved(); derieved.test();//无参调用 } }无参调的是父类方法public class Main { public static void main(String[] args) { Derieved derievednew Derieved(); derieved.test(2);//传参 } }有参调的是子类方法总结1.父类与子类的成员变量同名时子类/this优先调用自己的变量2.父类与子类的方法同名时若为重写则子类/this也优先调用自己的方法若为重载则子类/this根据参数列表选择调用3.super关键字可以用来调用父类成员但注意只能在子类非静态方法中使用因为静态方法是不依赖于对象的而super和this都依赖于对象。super关键字在构造方法中的应用该关键字的重要作用就是在子类中访问父类成员它在子类和父类的构造方法中产生巨大作用。super只能访问当前子类的父类不能访问父类的父类当子类继承父类后子类需要先帮助父类初始化。public class Base { public Base(){ System.out.println(父类构造方法); } } public class Derieved extends Base { public Derieved(){ //子类在这里用super()默认调用了父类的构造方法先帮父类初始化 System.out.println(子类构造方法); } } public class Main { public static void main(String[] args) { Derieved derievednew Derieved(); } }如果父类显示定义无参或默认构造方法在子类构造方法的第一行就会默认调用super()即调用父类构造方法。但当父类一旦显示定义有参构造方法那么编译器就不会默认调用父类构造方法需要自己手动调用super并且super一定要在第一行public class Base { int m; int n; public Base(int m,int n){ this.mm; this.nn; System.out.println(父类构造方法); } } public class Derieved extends Base { int a ; int b; public Derieved(int a,int b,int m,int n){ super(m,n);//super在第一行显示调用父类含参构造方法 this.aa; this.bb; System.out.println(子类构造方法); } }因为this也要在第一行所以显然super()和this()不可共存在一个函数中。当你没有写任何构造方法是java会提供目前屏蔽起来的代码但当你自己写了的时候java就不会自动给你提供public class Base { // Base(){ // } } public class Derieved extends Base { // Derieved(){ // super(); // } }总结1.super关键字用于访问当前子类的父类2.先有父后有子子类构造时必须先调用父类构造方法编译器会默认super()调用父类默认构造函数或无参构造但是当父类一旦显示为有参构造那么就需要我们手动显示地添加super(参数1参数2)3.super()必须放在子类构造函数的第一条语句super()和this()不可共存super和this的区别相同点1.都是java关键字2.只能在非静态方法中使用用来访问非静态成员方法和字段依赖于对象3.在构造方法中调用时必须时构造方法中的第一条语句并且不能同时存在不同点1.this是当前对象的引用当前对象即调用实例方法的对象super相当于是子类对象中从父类继承下来部分成员的引用。2.在非静态成员方法中this用来访问本类的方法和属性super用来访问父类继承下来的方法和属性。3.在构造方法中this(...)用于调用本类构造方法super(...)用来调用父类构造方法两种调用不能同时在构造方法中出现4.构造方法中一定会存在super(...)的调用用户没有写编译器也会增加但是this(...)用户不写则没有
企业数字化 ERP 产品动态
相关推荐
【链表】LC 25.K 个一组翻转链表 文章目录前言一、题目1、原题链接2、题目描述二、个人思路整理1、思路分析2、解题代码三、知识风暴前言 本专栏文章为《LeetCode 热题 100》的刷题题解,相关内容如有侵权,立即删除。 一、题目
1、原题链接 25.K 个一组翻转链表 2、题目描述 二、个人思路… · 2026/11/3 10:37:07
Bivane:React 组件库,PC 和 H5 交互分开适配 一套 API,两端各得其所。 One API. Screen-aware.
Bivane 是一个 React 组件库:基于 React Tailwind CSS 实现,以 Vant 的设计语言为视觉源,以 shadcn copy-paste 形态分发进你的项目。
它的核心做法只有一句话——PC 和 H5 的… · 2026/11/3 10:37:07
本源之大美| 赵杰 | 量子哲学 作者:赵杰清华大学硕士、微美全息云科技(NASDAQ:WIMI)董事长、微算法科技(NASDAQ:MLGO)董事长、育杰奖学金创始人1. 《量子意识爱子论》本体根基宇宙最基础单元为爱子,同步承载意识、… · 2026/11/3 10:37:07
向量数据库技术选型与实战优化指南 1. 向量数据库的核心价值与应用场景第一次接触向量数据库是在处理一个商品推荐系统项目时。当时我们团队发现传统关系型数据库在处理相似性搜索时性能捉襟见肘——每次用户浏览商品后,系统需要从百万级商品库中找出最相似的20个推荐项,MySQL查询耗时经常… · 2026/11/4 4:03:34
SpringBoot+HDFS构建企业级分布式云盘实践 1. 项目概述这个分布式云盘系统是我去年为一个企业客户开发的实际项目,经过半年多的线上运行验证,目前已经稳定服务了3000用户。系统采用SpringBootVue3前后端分离架构,后端使用HDFS作为分布式存储引擎,前端采用Element Plus组件库… · 2026/11/4 4:03:34
生成式推荐、大推荐模型与推荐基础模型:从判别式到生成式的技术演进与落地实践 1. 推荐系统正在经历一次底层范式的切换如果你这两年一直在做推荐系统,应该能明显感觉到一个变化:过去我们讨论的是“特征怎么交叉”“序列怎么建模”“多目标怎么融合”,而现在越来越多的一线团队开始聊“生成式推荐”“大推荐模型”“推荐基… · 2026/11/4 4:03:34
商业数据分析思维与实战方法全解析 1. 数据分析思维的核心价值商业数据分析师(CDA)认证体系中,数据分析思维是贯穿始终的基础能力。就像建筑师需要理解力学原理一样,数据分析师必须掌握这套思维框架才能将原始数据转化为商业洞见。我在金融、零售等多个行业的数据分… · 2026/11/4 4:03:34
IntelliJ IDEA高效配置指南:提升开发者生产力 1. 项目概述:为什么开发者需要个性化IDE配置作为JetBrains旗下最强大的Java集成开发环境,IntelliJ IDEA被全球数百万开发者视为生产力核心工具。但鲜少有人意识到:默认配置下的IDEA只发挥了其30%的潜力。根据2023年开发者生态调查报告&#x… · 2026/11/4 4:03:34
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46