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

devtools/2024/10/22 13:30:27/

简介: 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修饰,如下所示:
java">public abstract class Animal {// 抽象方法public abstract void sound();// 具体实现的方法public void sleep() {System.out.println("动物在睡觉");}
}
  1. 继承抽象类
    子类通过extends关键字继承抽象类,并必须实现抽象类中的所有抽象方法。否则,子类也必须被声明为抽象类。
java">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 子类指向子类实例化

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");}
}
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 抽象类父类指向子类实例化

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");}
}
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.ppmy.cn/devtools/127846.html

相关文章

基于深度学习的AI生成式人脸图像鉴别原理

随着深度学习的发展,生成式AI模型(如GANs)能够生成高质量的逼真人脸图像。这些生成式模型在娱乐、艺术等领域发挥着重要作用,但同时也带来了对虚假信息、深伪图像(deepfake)的担忧。因此,如何鉴…

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中,实现添加列表项,最后一项自动显示在可视区域范围!! 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

怎么快速定位bug?怎么编写测试用例?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 作为一名测试人员如果连常见的系统问题都不知道如何分析,频繁将前端人员问题指派给后端人员,后端人员问题指派给前端人员,那么在…

【Linux系列】在 Linux 中使用 `watch` 命令监控 Docker 容器状态

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

图纸管理软件哪个好用?三品图纸管理系统怎么样?

在现代企业与机构中,图纸管理是一项至关重要的任务。传统纸质图纸容易丢失、破损,并且难以进行高效的版本控制和协作。随着数字化技术的不断进步,图纸管理软件已成为企业提高管理效率、确保数据安全的关键工具。然而,市场上的图纸…

(六) 进程控制

(六) 进程控制 ps(1) 命令可以帮助我们分析本章中的一些示例,所以简单介绍一些参数的组合方式,更详细的信息请查阅 man 手册。 ps axf 主要用于查看当前系统中进程的 PID 以及执行终端(tty)和状态等信息,更重要的是它能显示出进程的父子关系…

掌握Go语言`runtime`包:性能优化与实战指南

掌握Go语言runtime包:性能优化与实战指南 引言第一部分:初识runtime包runtime包概述runtime包的核心功能 第二部分:常用功能详解Goroutine管理runtime.Goexitruntime.Goschedruntime.NumGoroutine 内存管理runtime.MemStatsruntime.GC 系统信…

python 爬虫 入门 四、线程,进程,协程

线程和进程大部分人估计都知道,但协程就不一定了。 一、进程 进程是操作系统分配资源和调度的基本单位,一个程序开始运行时,操作系统会给他分配一块独立的内存空间并分配一个PCB作为唯一标识。初始化内存空间后进程进入就绪态,PC…