JAVA-08-继承

继承

父类:被继承的类

子类:继承父类的类,可以访问父类的公有和保护成员。

extends:使用 extends 关键字来表示一个类继承另一个类。

方法重写:子类可以重写父类的方法,以提供特定的实现。重写的方法必须与父类中的方法具有相同的名称、返回类型和参数列表。

 // 父类class Animal {public void eat() {System.out.println("This animal eats food.");}public void sound() {System.out.println("Animal makes a sound");}}​// 子类class Dog extends Animal {// 重写父类的方法@Overridepublic void eat() {System.out.println("The dog eats bones.");}​public void bark() {System.out.println("wangwangwang.");}public void sound() {super.sound(); // 调用父类的方法  superSystem.out.println("Dog barks"); // 子类的实现}}​// 主类class Inheritance {public static void main(String[] args) {Dog myDog = new Dog();myDog.eat(); // 调用重写的方法myDog.bark(); // 调用子类的方法myDog.sound(); // 调用子类的方法,间接调用父类的方法}}

多态

多态:它允许一个接口或方法以多种形式存在。使得同一方法在不同对象上具有不同的行为。这种特性通常通过方法重写和接口实现来实现。

多态类型:编译时多态(静态多态)和运动时多态(动态多态)

静态多态

通过方法重载(同一个方法名,但参数列表不同)实现。

 public class MathUtils {public int add(int a, int b) {return a + b;}​public double add(double a, double b) {return a + b;}}

动态多态

通过方法重写实现。子类可以重写父类的方法,以提供不同的实现。在运行时,根据对象的实际类型调用相应的方法。

假设有一个动物园管理系统,让所有动物都能发出声音。通过多态,可以用一个通用的方法处理所有动物,而不需要知道具体的动物类型。

 public class Animal {public void sound() {System.out.println("Animal makes a sound");}}​public class Dog extends Animal {@Overridepublic void sound() {System.out.println("Dog barks");}}​public class Cat extends Animal {@Overridepublic void sound() {System.out.println("Cat meows");}}​public class Main {public static void makeAnimalSound(Animal animal) {animal.sound(); // 调用具体的声音方法}​public static void main(String[] args) {Animal myDog = new Dog();Animal myCat = new Cat();​makeAnimalSound(myDog); // 输出: Dog barksmakeAnimalSound(myCat); // 输出: Cat meows}}​public class Main {public static void main(String[] args) {Animal[] animals = { new Dog(), new Cat() };​for (Animal animal : animals) {animal.sound(); // 每个动物会调用自己的 sound 方法}}}

支持接口和抽象类

 interface Shape {void draw();}​class Circle implements Shape {public void draw() {System.out.println("Drawing a circle");}}​class Rectangle implements Shape {public void draw() {System.out.println("Drawing a rectangle");}}​public class Main {public static void main(String[] args) {Shape[] shapes = { new Circle(), new Rectangle() };​for (Shape shape : shapes) {shape.draw(); // 每个形状会调用自己的 draw 方法}}}

增强可扩展性

假设想要添加一个新形状,例如三角形,只需实现 Shape 接口,而不需要修改任何使用 Shape 的代码。

 class Triangle implements Shape {public void draw() {System.out.println("Drawing a triangle");}}​public class Main {public static void main(String[] args) {Shape[] shapes = { new Circle(), new Rectangle(), new Triangle() };​for (Shape shape : shapes) {shape.draw(); // 输出: Drawing a circle, Drawing a rectangle, Drawing a triangle}}}

多态与继承的区别

  • 继承:创建类的层次结构,使得子类能够访问父类的属性和方法。

    • 是一种类与类之间的关系,子类继承父类的属性和方法

    • 主要用于重用和组织结构。

  • 多态:是通过父类引用指向子类对象来实现灵活的行为,允许不同的子类以相同的方式被处理,但表现出不同的行为。

    • 是指同一个方法在不同对象上表现出不同的行为。

    • 主要依赖于方法重写和父类引用指向子类对象的特性。

    • 允许在运行时根据对象的实际类型决定调用哪个方法。

继承是实现多态的基础,而多态则是利用继承的一种机制,使得代码更加灵活和可扩展。

阻止继承

采用final声明。

不允许拓展的类被称为final类。

类中的特定方法也可以被声明为final。这样子类就不能重写这个方法了。

final类中的所有方法自动成为final方法(只有方法不包括域)。

例如:String类就是一个final类。

 public final class Dog extends Anmails{//.....}

protected

JAVA的4种访问修饰符:

  • private:仅对本类可见

  • public:对所有类可见

  • protected:对本包和所有子类可见

  • 不需要修饰符:对本包可见

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Trimble X12三维激光扫描仪正在改变游戏规则【上海沪敖3D】

Trimble X12 三维激光扫描仪凭借清晰、纯净的点云数据和亚毫米级的精度正在改变游戏规则。今天的案例我们将与您分享,X12是如何帮助专业测量咨询公司OR3D完成的一个模拟受损平转桥运动的项目。 由于习惯于以微米为单位工作,专业测量机构OR3D是一家要求…

SpringBoot框架下的资产管理创新

4系统概要设计 4.1概述 系统设计原则 以技术先进、系统实用、结构合理、产品主流、低成本、低维护量作为基本建设原则,规划系统的整体构架. 先进性: 在产品设计上,整个系统软硬件设备的设计符合高新技术的潮流,媒体数字化、压缩、…

统信UOS开发环境支持Perl

UOS凭借广泛的编程语言支持,为开发者构建了一个高效灵活的开发环境,无需担心环境兼容性问题。 文章目录 一、环境部署1. Perl开发环境安装2. Perl开发环境配置环境变量配置模块管理器编辑器集成调试工具二、代码示例文件处理Web开发三、常见问题1. 依赖管理问题2. 性能问题3.…

qt QClipboard详解

1、概述 QClipboard是Qt框架中的一个类,它提供了对窗口系统剪贴板的访问能力。剪贴板是一个临时存储区域,通常用于在应用程序之间传递文本、图像和其他数据。QClipboard通过统一的接口来操作剪贴板内容,使得开发者能够方便地实现剪切、复制和…

机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着数据采集技术的发展,时间序列数据在各个领域中的应用越来越广泛。时间序列预测旨在基于过去的时间数据来…

强大的吾店云建站平台介绍

经过多年在WordPress建站领域的摸索和探索,能轻松创建和管理各种类型网站的平台 – 吾店云建站平台诞生了。 应该说这是一个艰苦卓绝的过程,在中国创建一个能轻松创建和使用WordPress网站的平台并不容易,最主要是网络环境和托管软件的限制。…

猿创征文|Inscode桌面IDE:打造高效开发新体验

猿创征文|Inscode桌面IDE:打造高效开发新体验 引言 在当今快速发展的软件开发领域,一个高效、易用的集成开发环境(IDE)是每个开发者必不可少的工具。Inscode 桌面 IDE 作为一款新兴的开发工具,凭借其强大…

Java多线程并发安全问题

多线程并发安全问题 概念 当多个线程并发操作同一临界资源,由于线程切换时机不确定,导致操作临界资源的顺序出现混乱严重时可能导致系统瘫痪. 临界资源:操作该资源的全过程同时只能被单个线程完成. 例 当beans为1时,若两个线程同时调用getBean方法,t…

电脑管家实时监控软件下载 | 六款知名又实用的电脑监控软件推荐!(珍藏篇)

在当今的商业环境,企业对于员工在工作期间的行为监控需求越来越强烈。 尤其是在网络化和信息化程度不断提高的今天,电脑管家实时监控软件是企业管理员工工作行为、提高工作效率、防止信息泄露的重要工具。 本文,将为您推荐六款知名又实用的电…

机器学习—训练细节

首先回忆如何训练一个逻辑回归模型,建立一个Logistic回归模型是:你将指定如何计算输出给定输入特征x和参数w和b,在逻辑回归函数预测f(x)g,它是应用于w*xb的Z状结肠函数,所以如果znp.dot(w,x)b,f_x1/(1np.ex…

图片翻译之尺码表批量翻译

最近在为客户解决问题的过程中,小编发现了一个令人惊叹的应用场景——电商平台可以通过OpenAI 批量翻译图片格式的尺码表,且翻译内容能够准确地呈现为多种语言! 这不仅让我感叹 AI 效率的强大,也让我对电商行业的竞争压力感到震撼…

深入了解决策树:机器学习中的经典算法

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

C语言实现数据结构之堆

文章目录 堆一. 树概念及结构1. 树的概念2. 树的相关概念3. 树的表示4. 树在实际中的运用(表示文件系统的目录树结构) 二. 二叉树概念及结构1. 概念2. 特殊的二叉树3. 二叉树的性质4. 二叉树的存储结构 三. 二叉树的顺序结构及实现1. 二叉树的顺序结构2.…

如何关闭 Ubuntu22.04 LTS 的更新提醒

引言 众所周知,Ubuntu 的软件更新和版本更新提醒是又多又烦,如果不小心更新到了最新的 Ubuntu 还可能面临各种各样的问题,这里提供一个解决方法 步骤 首先按照下面步骤打开 Software & Updates 然后按照下面步骤依次点击 最后关闭即可…

CS61b part5

8.1 The Desire for Generality 今天我们将会讨论一个全新的主题,称为继承。为了铺垫,让我们考虑在过去几节课中构建的SList类和AList类。我们看到它们实际上具有完全相同的操作,它们都允许我们添加元素、获取元素、移除元素以及获取大小&am…

隆盛策略正规股票杠杠交易市场A股,盘中突变…

突然跌了。 查查配分析A股市场今天大幅高开,上证指数一度重返3500点之上,临近午盘,该指数翻绿。TMT赛道掀起涨停潮,成为上午A股市场最大亮点之一。 另外,多只近期强势股继续走强,有股票在短短9个交易日的时间股价自低位涨了约3倍。 隆盛策略以其专业的服务和较低的管理费用在…

学生公寓人走断电控制系统的设计要求

石家庄光大远通电气有限公司学生公寓人走断电系统技术背景用电器待机能耗往往是一种不易被发现的“隐藏的浪费”,如果将一户家庭的空调、洗衣机、电视、微波炉、电饭煲五类电器进行计算,待机功率在12W到15W,待机能耗0.2度到0.33度电。每年能耗…

解决yum命令报错“Could not resolve host: mirrorlist.centos.org

这个主要是yum源出了问题或者服务器网络有问题,检查网络排除网络问题后,可更换源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.k wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository…

TikTok Spark Ads火花广告是什么?如何设置?

TikTok的广告类型多样、功能各异,如果你需要投放精准度更高、效果更持久、更能吸引用户点击和参与的广告,那么Spark Ads会是一个相当不错的选择。 一、什么是TikTok Spark Ads 1.概念 Spark Ads是直接使用真实的自然流量视频及其功能来进行宣传的一种原…

微软日志丢失事件敲响安全警钟

NEWS | 事件回顾 最近,全球最大的软件公司之一——微软,遭遇了一场罕见的日志丢失危机。据报告,从9月2日至9月19日,持续长达两周的时间里,微软的多项核心云服务,包括身份验证平台Microsoft Entra、安全信息…