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,一经查实,立即删除!

相关文章

git命令笔记(速查速查)

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

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

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

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

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

283.移动零

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

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对人体又有哪些危害呢,今天和大家分享一篇文章,题目为“单细胞转录组学揭示吸入地铁细颗粒物引起的肺部炎症”,作…

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

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

Java-继承与多态-上篇

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

laravel 查询数据库

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

【记录】VSCode|自用设置项

文章目录 1 基础配置1.1 自动保存1.2 编辑区自动换行1.3 选项卡换行1.4 空格代替制表符1.5 开启滚轮缩放 2 进阶设置2.1 选项卡不自我覆盖2.2 选项卡限制宽度2.3 选项卡组限制高度2.4 字体设置2.5 字体加粗2.6 侧边栏2.7 沉浸式代码模式 Zen Mode2.8 设置 Zen 模式的选项卡组 3…

filebeat接入nginx和mysql获取日志

下载nginx &#xff08;1&#xff09; 直接下载 yum install nginx -y&#xff08;2&#xff09;查看状态启动 systemctl start nginx systemctl status nginx&#xff08;3&#xff09;配置文件检查 nginx -t&#xff08;4&#xff09;端口检查 netstat -tulpn | grep :80&am…

Flutter项目打包ios, Xcode 发布报错 Module‘flutter barcode_scanner‘not found

报错图片 背景 flutter 开发的 apple app 需要发布新版本&#xff0c;但是最后一哆嗦碰到个报错&#xff0c;这个小问题卡住了我一天&#xff0c;之间的埪就不说了&#xff0c;直接说我是怎么解决的&#xff0c;满满干货 思路 这个报错 涉及到 flutter_barcode_scanner; 所…

携手并进,智驭教育!和鲸科技与智谱 AI 签署“101 数智领航计划”战略合作协议

近日&#xff0c;上海和今信息科技有限公司&#xff08;以下简称“和鲸科技”&#xff09;与北京智谱华章科技有限公司&#xff08;以下简称“智谱 AI”&#xff09;签署“101 数智领航计划”战略合作协议。双方将携手营造智能化学科教育与科研环境&#xff0c;提供多种大模型工…

前后端联调需要改ip联调多个后端,用nginx代理

前后端联调需要改ip联调多个后端 Nginx #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime…

空洞卷积:Atrous/Dilated convolution - 语义分割中多用到

没办法&#xff0c;我还是很多基础的、底层的模块不通透&#xff0c;读论文难免会受到阻碍&#xff0c;而且这现在科研任务很急了&#xff0c;必须要马上动手实验&#xff0c;全给我弄明白、特别是算法&#xff01; 空洞卷积-可变形卷积-这一个个我都要。 空洞卷积据说在语义分…

MySQL企业常见架构与调优经验分享

文章目录 一、选择 PerconaServer、MariaDB 还是 MYSQL二、常用的 MYSQL 调优策略三、MYSOL 常见的应用架构分享四、MYSOL 经典应用架构 观看学习课程的笔记&#xff0c;分享于此~ 课程&#xff1a;MySQL企业常见架构与调优经验分享 mysql官方优化文档 一、选择 PerconaServer、…

机器学习与深度学习2:梯度下降算法和BP反向传播算法

梯度下降算法&#xff1a; 算法原理 上一章我们已知神经网络算法就是求解拟合函数&#xff0c;通过线性变换和非线性变换来得出损失函数最小的模型。那么是如何进行求解的呢&#xff0c;其中之一就是梯度下降算法。 如图&#xff0c;当我们需要求解拟合曲线时&#xff0c;如何…

Verilog基础:层次化标识符的使用

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、前言 Verilog HDL中的标识符(identifier)是一个为了引用而给一个Verilog对象起的名字&#xff0c;分为两大类&#xff1a;普通标识符大类和层次化标识符大类。…

HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)

在鸿蒙应用开发中&#xff0c;Navigation 组件是实现界面间导航的重要工具。本文将介绍如何使用 Navigation 组件实现页面跳转及参数传递&#xff0c;确保你能轻松构建具有良好用户体验的应用。 当前HarmonyOS支持两套路由机制&#xff08;Navigation和Router&#xff09;&…