当前位置: 首页 > article >正文

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 {
    // 实现抽象方法
    @Override
    public 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.0
        Dog 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.0
        Animal aml = new Dog("XiaoMi", 1234);
        aml.test();
    }
}
  • 打印:
name = XiaoMi
test() is called

http://www.kler.cn/news/359925.html

相关文章:

  • PostgreSQL模板数据库template0和template1的异同点
  • 如何在 CentOS 7 上使用 Nginx 将 www 重定向到非 www
  • 全面了解 NGINX 的负载均衡算法
  • RabbitMQ系列学习笔记(三)--工作队列模式
  • 基于卷积神经网络和 Swin Transformer 的图像处理模型
  • Docker设置日志滚动
  • restrict是如何限定指针访问的?C语言必须用.c为扩展名吗?为什么C系语言很流行?哪些语言可以称为C系语言?
  • GLSL(OpenGL Shading Language)学习路线
  • Python | Leetcode Python题解之第498题对角线遍历
  • Ratkins Army Pack 死亡军团骑士战士游戏角色
  • 2024年10月21日可以使用的微信小程序官方获取头像和姓名
  • 函数的力量:掌握C语言的基石
  • CommonJS 和 ES modules
  • vector和list
  • 基于AIACC加速器快速实现LLaMA-7B指令微调
  • 写好英文邮件的技巧,如何结构化表达?
  • OpenLayers:用于在 web 应用程序中创建互动地图
  • 阿里巴巴达摩院|Chain of Ideas: 利用大型语言模型代理革新新颖创意开发的研究
  • Python Flask 接收前端上传的图片
  • C++11 thread,mutex,condition_variable,atomic,原子操作CAS,智能指针线程安全,单例模式最简单实现方式