Java之继承抽象类用法实例(三十一)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者

新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.Java继承抽象类介绍
    • 🌻3.代码实例
      • 🐓3.1 子类指向子类实例化
      • 🐓3.2 抽象类父类指向子类实例化

🌻1.前言

本篇目的:Java之继承抽象类用法实例

🌻2.Java继承抽象类介绍

Java继承是一种面向对象编程的特性,它允许子类继承父类的属性和方法。在Java中,抽象类(Abstract Class)是一种不能被实例化的类,它可以包含抽象方法(没有具体实现的方法)和具体实现的方法。下面我将详细介绍Java继承抽象类的基本概念和使用方法。

  1. 抽象类的定义
    抽象类使用关键字abstract修饰,如下所示:
public abstract class Animal {// 抽象方法public abstract void sound();// 具体实现的方法public void sleep() {System.out.println("动物在睡觉");}
}
  1. 继承抽象类
    子类通过extends关键字继承抽象类,并必须实现抽象类中的所有抽象方法。否则,子类也必须被声明为抽象类。
public class Dog extends Animal {// 实现抽象方法@Overridepublic void sound() {System.out.println("汪汪汪");}
}
  1. 抽象类的特点
    (1)抽象类不能被实例化,只能通过子类来实现具体的对象。
    (2)抽象类可以包含属性、方法、构造器,但构造器不能直接被调用,需要在子类中通过super关键字调用。
    (3)抽象类可以包含抽象方法和具体实现的方法,具体实现的方法可以被子类继承和使用。
    (4)抽象类可以继承另一个类(抽象类或具体类)并添加新的抽象方法或实现。
  2. 抽象类的优势
    (1)抽象类为子类提供了一个公共的、规范的定义,使得子类可以共享方法实现。
    (2)抽象类可以包含抽象方法,使得子类必须实现这些方法,从而保证子类具有某些共性。
    (3)通过抽象类,可以更好地实现多态性。
  3. 使用场景
    抽象类常用于以下场景:
    (1)当多个类具有相同的方法和属性,但具体实现不同,可以使用抽象类来定义这些共同点。
    (2)当需要定义一个公共的接口,但不希望这个接口被直接实例化时,可以使用抽象类。
  • Java继承抽象类是一种强大的面向对象编程特性,它可以帮助我们更好地组织和复用代码,实现多态性。通过抽象类,我们可以定义具有共性的方法,并在子类中实现具体的业务逻辑。在实际开发过程中,合理使用抽象类可以提高代码的可读性、可维护性和扩展性。

🌻3.代码实例

🐓3.1 子类指向子类实例化

  • Animal.java
public abstract class Animal {protected String name;public Animal(String name) {this.name = name;System.out.println("name = " + name);}public void test(){System.out.println("test() is called\n");}
}
  • Dog.java
public class Dog extends Animal {public Dog(String name,int count) {super(name);  // 调用父类构造方法,初始化name}public static void main(String[] args) {//v1.0Dog dog = new Dog("HuaWei", 5678);dog.test();}
}
  • 打印:
name = HuaWei
test() is called

🐓3.2 抽象类父类指向子类实例化

  • Animal.java
public abstract class Animal {protected String name;public Animal(String name) {this.name = name;System.out.println("name = " + name);}public void test(){System.out.println("test() is called\n");}
}
  • Dog.java
public class Dog extends Animal {public Dog(String name,int count) {super(name);  // 调用父类构造方法,初始化name}// main 函数,测试代码public static void main(String[] args) {//v2.0Animal aml = new Dog("XiaoMi", 1234);aml.test();}
}
  • 打印:
name = XiaoMi
test() is called

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

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

相关文章

一次文件重写后,文件修改时间未发生变化的原因

昨天用python写了一个脚本,用于统计店铺的某些数据,然后将数据存储在文本里,定时每天早上执行。 昨天傍晚写完的,执行了一下,执行完成后,此时文本修改时间为2024-10-22 18:00。 早上来公司一看&#xff0…

git命令笔记(速查速查)

git命令功能总结 1.创建git的本地仓库2. 配置本地仓库(name和email地址)3. 工作区、版本库、暂存区、对象区3.1 add, commit3.2 打印提交日志3.2 修改文件 4.版本回退(git reset)5. 撤销修改(在push之前撤销)6.删除版本库中的文件…

SQL Injection | SQL 注入分类 —— 查询方式

关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客 在进行 SQL 注入攻击时,如果目标服务器的后端 SQL 查询不返回任何结果(即无回显),我们可能需要采用 SQL 盲注技术来进行进一步的测试。盲注是一种在无法…

SSM框架学习(七、MyBatis-Plus高级用法:最优化持久层开发)

目录 一、MyBatis-Plus快速入门 1.简介 2.快速入门 二、MyBatis-Plus核心功能 1.基于Mapper接口CRUD (1)Insert 方法 (2)Delete方法 (3)Update 方法 (4)Select方法 2.基于Serv…

用PHP写一个EACO(drc20)写一个和狗狗币,比特币,avax, bnb,eth,sol,usdt,等全球前30大数字货币的兑换去中心化小程序。

创建一个简单的PHP小程序,用于EACO(DRC20)与全球前30大数字货币(如狗狗币、比特币、AVAX、BNB、ETH、SOL、USDT等)进行去中心化兑换的功能,需要集成加密货币的API接口来获取实时汇率和执行兑换操作。以下是…

Chrome DevTools 三: Performance 性能面板扩展—— 性能优化

Performance 性能 (一)性能指标 首次内容绘制 (First Contentful Paint,FCP): 任意内容在页面上完成渲染的时间 最大内容绘制 (Largest Contentful Paint,LCP): 最大内容在页面上完成渲染的时间 第一字节…

《中国结算全国股份转让系统—结算参与人数据接口规范》

《中国结算全国股份转让系统—结算参与人数据接口规范》 本文档在原《中国结算全国股份转让系统结算参与人数据接口规范(Ver1.2)》基础上,依据《关于通过中国结算缴纳身份验证费的业务说明》、《关于通过中国结算缴纳手机号码核查费的业务说明…

283.移动零

目录 题目解法解释: .reverse()怎么用的?Char 13: error: no matching function for call to reverse 什么是双指针?双指针的常见类型:总结: 题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末…

【Java函数篇】Java8中的Lambda表达式实战详解

文章标题 什么是lambda表达式Lambda表达式示例Lambda表达式特点更多实战案例场景1:使用 lambda 表达式迭代列表并对列表项执行某些操作场景2:使用 lambda 表达式在 Java 中创建并启动线程场景3:使用 lambda 表达式向 GUI 组件添加事件监听器 …

88.【C语言】文件操作(5)

目录 文件的随机读写 1.fseek函数 代码示例 运行结果 2.ftell函数 代码示例 运行结果 3.rewind函数 代码示例 运行结果 承接79.【C语言】文件操作(4)文章 文件的随机读写 1.fseek函数 声明:int fseek ( FILE * stream, long int offset, int origin ); 格式:fsee…

APM 3.0.0|二次元味很冲的B站音乐软件

APM是一款专为B站音频设计的第三方播放器,支持从B站获取音频内容,提供桌面小组件,多语言支持,以及针对Android系统的优化。下载安装APK后打开应用,登录B站账号,浏览并播放音频内容。 大小:73M …

13分+文章利用scRNA-Seq揭示地铁细颗粒物引起肺部炎症的分子机制

写在前面 人们乘坐地铁时,不可避免地在地铁站台上吸入细颗粒物(PM2.5),但PM2.5对人体又有哪些危害呢,今天和大家分享一篇文章,题目为“单细胞转录组学揭示吸入地铁细颗粒物引起的肺部炎症”,作…

Android:加载三方应用的小部件到自己APP显示

两种方式: 1、自己加载小部件列表做选择要显示的小部件 2、调用系统的弹窗做选择要显示的小部件 直接贴代码: public class TempActivity extends FragmentActivity {private ActivityTempBinding viewBinding;private AppWidgetManager appWidgetMa…

私域卖货难点如何解决

明确了品牌卖货的本质,我们来看一下私域品牌的卖货难点如何解决。 一、产品层面 想要提高卖货效率,第一步就是打造产品竞争力。产品竞争力的打造主要在于两点:市场调研和定期更新迭代,其中定期更新迭代则是打造产品竞争力的核心环…

《AI生成式工具使用》之:AI文本生视频(二战!)

目录 背景说明及目标 尝试练手 1、豆包AI之图片生成 总结:豆包AI生成的图片,不太能看细节,涉及到中文的基本上不能细看都是类似乱码的东西,有明显的逻辑性问题(比如不符合道路交规)。需要根据生成的结果…

超越 React Query:探索更高效的数据请求策略

你好,开发者们! 在前端开发的海洋中,我们常常遇到组件间通信的难题。你是否也曾为如何优雅地在组件间传递信息而头疼?今天,我想和大家分享一个让我眼前一亮的解决方案——使用 alova。 跨组件触发请求的挑战 想象一…

Java-继承与多态-上篇

关于类与对象&#xff0c;内容较多&#xff0c;我们分为两篇进行讲解&#xff1a; &#x1f4da; Java-继承与多态-上篇&#xff1a;———— <就是本篇> &#x1f4d5; 继承的概念与使用 &#x1f4d5; 父类成员访问 &#x1f4d5; super关键字 &#x1f4d5; supe…

Windows设置程序开机自启动的几种方法

1. 使用“启动”文件夹 Windows 有一个专门的“启动”文件夹&#xff0c;所有放在这个文件夹中的程序都会在系统启动时自动运行。 步骤&#xff1a; 按下 Win R&#xff0c;输入 shell:startup&#xff0c;并按下回车。 在弹出的启动文件夹中&#xff0c;将你想要开机自启动…

laravel 查询数据库

数据库准备 插入 三行 不同的数据 自行搭建 laravel 工程 参考 工程创建点击此处 laravel 配置 数据库信息 DB_CONNECTIONmysql #连接什么数据库 DB_HOST127.0.0.1 # 连接 哪个电脑的 ip &#xff08;决定 电脑 本机&#xff09; DB_PORT3306 # 端口 DB_DATABASEyanyu…

PostgreSQL模板数据库template0和template1的异同点

PostgreSQL模板数据库 PostgreSQL有两个模板数据库&#xff1a;template0和template1&#xff0c;template0是不可修改的&#xff0c;而template1是可以修改的。 那模板数据库有什么作用呢&#xff1f;顾名思义&#xff0c;当做模板。 其实我们创建数据库 CREATE DATABASE 其…