Java基础知识——继承

目录

一、什么是继承

二、类的继承格式

三、继承的特点

四、继承的类型

五、继承的关键字

六、为什么使用继承


一、什么是继承

        继承是面向对象编程(OOP)的四大基本原则之一,它允许我们创建一个新类,继承并扩展现有类的属性和方法。继承是一种机制,通过这种机制,一个类可以基于另一个已存在的类来定义。已存在的类称为“父类”或“超类”,而新创建的类则称为“子类”。子类自动继承父类的属性和方法,同时还可以定义自己的新属性和方法。现实生活中也存在继承:

波斯猫和巴里猫属于猫科,沙皮狗和斑点狗属于犬科。猫科动物和犬科动物又是属于动物类。继承需要符合的关系是:is-a,父类更通用,子类更具体。

二、类的继承格式

        在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

class 父类 {}class 子类 extends 父类 {}

        具体代码如下:

// 父类 Animal
public class Animal {String name;public void eat() {System.out.println(name + "正在吃饭");}
}// 子类 Dog 继承自 Animal
public class Dog extends Animal {public void bark() {System.out.println(name + "正在汪汪叫");}
}

        在这个例子中,我们定义了一个名为Animal的父类,它具有一个name属性和一个eat方法。接着,我们定义了一个名为Dog的子类,它通过使用extends关键字继承了Animal类。这意味着Dog类现在有了name属性和eat方法,同时我们还为它添加了一个新的bark方法。

三、继承的特点

  1. 单继承:Java不支持多继承,即一个类不能同时继承多个父类。但可以实现多个接口。
  2. 多层继承:一个子类可以成为另一个类(孙类)的父类,形成类的层次结构。
  3. 重写:子类可以重写(覆盖)父类的方法,提供不同的实现逻辑。
  4. 访问权限:子类不能访问父类中的private成员,但可以访问public和protected成员。
  5. 构造函数:子类的构造函数会自动调用父类的无参构造函数。如果父类没有无参构造函数,需要在子类的构造函数中用显式调用父类的其他构造函数。

四、继承的类型

五、继承的关键字

1、extends关键字

  • 用于类之间的单继承关系,即一个子类只能继承一个父类。
  • 子类可以使用 extends 关键字来继承父类中非私有的属性和方法。
  • extends不仅用于基本类型的类继承,还用于在泛型中指定子类型必须为特定父类的子类。

2、implements关键字

  • 用于实现接口的情况,一个类可以实现多个接口,从而实现多继承的功能。
  • 当类实现一个接口时,需要提供接口中所有方法的具体实现,接口中的抽象方法都要实现。

3、其他相关关键字

  • super 关键字用于访问对象的直接父类的成员变量或方法。
  • this 关键字指代当前对象,常用于区分成员变量和局部变量以及在构造器中调用其他构造器。
  • final 关键字可以修饰类、方法和变量,被其修饰的类不能被继承,方法不能被重写,变量的值一旦赋值就不能更改。格式如下:
    final class 类名 {//类体}
    修饰符(public/private/default/protected) final 返回值类型 方法名(){//方法体}
class Parent {int num;void display() {System.out.println("This is the parent class");}
}class Child extends Parent {int num;void display() {super.display(); // 调用父类的display方法this.num = 20; // 使用this关键字引用当前对象的num属性System.out.println("This is the child class, num = " + this.num);}void show() {this.num = 10; // 使用this关键字引用当前对象的num属性System.out.println("Inside child class, num = " + this.num);}
}public class Main {public static void main(String[] args) {Child obj = new Child();obj.display(); // 输出: This is the parent class, This is the child class, num = 20obj.show(); // 输出: Inside child class, num = 10}
}

        在上面的代码中,Child类继承了Parent类。在Child类的display方法中,我们使用了super.display()来调用父类的display方法。然后,我们使用this.num来引用当前对象(即Child对象)的num属性,并将其设置为20。最后,我们在show方法中使用了this.num来引用当前对象的num属性,并将其设置为10。需要注意的是,当子类的方法与父类的方法同名时,可以使用super关键字来调用父类的方法,以避免隐藏或覆盖父类的方法。而this关键字则用于引用当前对象的属性或方法,特别是在方法参数与类成员变量同名的情况下,可以明确区分它们。

六、为什么使用继承

        继承的主要目的是实现代码的重用和扩展性。通过继承,我们可以避免重复编写相同的代码,而是将公共的属性和方法放在父类中,让所有子类共享。同时,继承也使得我们的程序更加灵活,因为可以在不修改父类的情况下,通过扩展子类来增加新的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS学习】Calendar Kit日历管理

简介 Calendar Kit提供日历与日程管理能力,包括日历的获取和日程的创建能力。 Calendar Kit为用户提供了一系列接口来获取日历账户,并使用特定的接口向日历账户中写入日程。 如果写入的日程带有提醒时间则系统会在时间到达时向用户发送提醒。 约束点…

eclipse 新建类class文件增加copyright版权信息

1、Window -> Preferences 2、输入code,找到code templates Java > Code Style > Code Templates 比如进行如何的设置: 3、新增类文件,会自动增加版权:

2024.7.12单片机PWM

遇到了一个光标变成下划线的问题: Keil5光标变下划线,变回来的方法_keil5光标是下划线-CSDN博客 这里是用了输入捕获(IC:input capture),输出比较(OC:Output Compare)区别 学到这…

解析DDD开发框架Axon

在微服务架构盛行的当下,领域驱动设计(DDD)也得到了崭新的发展。在DDD中包含了聚合、领域事件等核心概念,也需要引入CQRS、事件溯源等架构模式。对于开发人员而言,如何简单而高效的实现这些核心概念和架构模式是一大痛…

集群节点状态异常的解决方式

文章目录 集群节点状态异常的解决方式问题概述解决方式1.关闭所有服务2.对所有集群删除Hadoop相关文件2.1 删除Hadoop系统运行时创建的临时数据和文件2.2 删除Hadoop的数据文件 3.重新对Hadoop节点进行初始化和启用4.重启服务,检查节点状态 集群节点状态异常的解决方…

软件测试工作流程

1、目的 有效的保证软件质量;有效的制定不同测试类型(软件系统测试、音频主观性测试、专项测试、自动化测试、性能测试、用户体验测试)的软件测试计划;按照计划进行测试,发现软件中存在的问题;对软件中已经解决的问题进行有效的验证;判定测试过程和问题验证的有效性。2、…

PostgreSQL(二十一)clog的作用与管理

一、CLOG的概念及作用 1、基础概念 (1)CLOG:记录事务号的状态,可以用其判断行的可见性。每个事务状态占用两个bit位。 tip:事务的状态有4种:IN_PROGRESS,COMMITTED,ABORTED和SUB_…

如何应对AI发展下的伦理挑战

目录 1.概述 2.构建可靠的AI隐私保护机制 2.1. 最小化数据收集 2.2. 数据去标识化 2.3. 加密技术 2.4. 分布式学习和边缘计算 2.5. 强化用户控制权 2.6. 独立审计和合规性检查 2.7. 持续教育和培训 2.8.小结 3.确保AI算法的公正性和透明度 3.1.增强AI决策透明度的方…

第一百五十九节 Java IO教程 - Java输入流、文件输入流、缓冲输入流、推回输入流

Java IO教程 - Java输入流 抽象基本组件是InputStream类。 InputStream|--FileInputStream |--ByteArrayInputStream |--PipedInputStream|--FilterInputStream|--BufferedInputStream |--PushbackInputStream |--DataInputStream |--ObjectInputStream我们有FileInputStream&…

【C++】——类和对象(中)

文章目录 类的默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载运算符重载 const成员函数 类的默认成员函数 在C中,类(class)可以拥有多种成员函数,其中一些成员函数在类定义中没有显式声明时,编译器会隐式地…

Windows上LabVIEW编译生成可执行程序

LabVIEW项目浏览器(Project Explorer)中的"Build Specifications"就是用来配置项目发布方法的。在"Build Specifications"右键菜单中选取"New",可以看到程序有几种不同的发布方法:Application(EXE)、Installer、.Net Inte…

C++第七弹 -- C/C++内存管理

目录 前言一. C/C内存分布二. C语言中动态内存管理方式三. C中动态内存管理四. operator new与operator delete函数五. new和delete的实现原理1.内置类型2. 自定义类型 六. 定位new表达式(placement-new)七. 常见面试题总结 前言 在C/C编程中,内存管理是至关重要的…

超详细Midjourney国际版注册使用全流程

众所周知,目前Midjourney AI绘画的国内版本有很多种,甚至微信、浏览器插件等都有,眼花缭乱,使用门槛低,无需特殊网络手段即可访问使用。 不过,根据一些用户的反馈,尽管国内的那些版本在注册和充…

软件测试——测试用例

工作职责: 1.负责产品系统测试,包括功能测试、性能测试、稳定性测试、用户场景测试、可靠性测试等。 2.负责测试相关文档的编写,包括测试计划、测试用例、测试报告等。 3.负责自动化测试框架、用例的维护。 岗位要求: 1.熟练…

人工智能与伦理挑战:多维度应对策略

人工智能技术近年来取得了迅猛发展,广泛应用于医疗诊断、金融分析、教育辅助、自动驾驶等各个领域,极大地提升了生产效率和服务质量,推动了科技进步和商业创新。然而,伴随其普及和应用的泛滥,AI也带来了数据隐私侵犯、…

C#知识|账号管理系统:添加账号的功能笔记

哈喽,你好啊,我是雷工! 本节记录账号管理系统中添加账号的逻辑过程,以下为学习笔记。 01 实现内容 ①:实现当点击【保存到数据库】按钮时,将账号名称、原创篇数、账号简介、账号类型显示的内容存储到LGAccountManagerDB数据库的Account表中; ②:实现点击【保存到数据库…

如何用Claude 3 Sonnet Artifacts实现对数据文件的可视化分析?

如何用Claude 3 Sonnet Artifacts实现对数据文件的可视化分析? Prompt模板: Initial Request: 初始请求: I have uploaded data of the number of Software Engineering Jobs in the US since May 2020. I need different visual creative…

实验二:图像灰度修正

目录 一、实验目的 二、实验原理 三、实验内容 四、源程序和结果 源程序(python): 结果: 五、结果分析 一、实验目的 掌握常用的图像灰度级修正方法,包括图象的线性和非线性灰度点运算和直方图均衡化法,加深对灰度直方图的理解。掌握对比度增强、直方图增强的原理,…

WebSocket实现群聊功能、房间隔离

引用WebSocket相关依赖 <dependency><groupId>javax.websocket</groupId><artifactId>javax.websocket-api</artifactId><version>1.1</version></dependency><dependency><groupId>org.springframework</grou…

mac电脑pdf合并,macpdf合并成一个pdf

在数字化办公和学习的今天&#xff0c;pdf文件因其跨平台兼容性强、格式稳定而成为了最受欢迎的文档格式之一。但随之而来的问题也接踵而至&#xff0c;如何将多个pdf文件合并为一个&#xff1f;这不仅关系到文档的整洁性&#xff0c;更是时间管理的重要环节。今天&#xff0c;…