【JAVA基础】抽象类

news2024/11/14 19:40:26

抽象类

  • 引言
  • 抽象类 抽象方法


引言

​ 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

​ 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

​ 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

​ 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

​ 在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

抽象类 抽象方法

继承的本质是代码的复用,子类可以对父类方法进行重写,当我们子类很多,并且都需要在子类中重写同一个方法,我们其实就不需要在父类中实现这个方法。

在这里插入图片描述

但是这样父类看起来好像就没有必要定义,此时我们可以创建抽象类

  • 定义:abstract修饰的类叫做抽象类,abstract修饰的方法叫做**抽象方法**

    总体来说就是:

    • 抽象类:包含抽象方法的类
    • 抽象方法:没有方法主体的方法
  • 使用格式

    abstract class 类名{
        修饰符 abstract 返回值类型 方法名(参数列表);
    }
    
  • 特点:

    1. abstract修饰的抽象方法不需要再抽象类中实现,但是必须在子类中重写并实现(子类如果不是抽象类)否则就会报错,如图:

      在这里插入图片描述

    2. 抽象类一定是父类

    3. 只有抽象类中才能有抽象方法,普通类中不可以有抽象方法

    4. 抽象类中不一定写抽象方法,也可以写普通方法

    5. 抽象类无法被实例化(被new对象),只能使用多态

    6. final和abstract不可以同时使用

    7. abstract修饰的方法不可以被static关键字修饰,因为static修饰的方法属于类方法,abstract修饰的方法属于对象

    8. 抽象方法不可以使用private访问修饰符进行修饰

    9. 抽象类中有构造器,但是抽象类的构造器无法创建对象,其构造器的目的是为了完成必要的初始化操作

举个例子

// 抽象类(父类)
public abstract class Animals {
    private String name;

    public Animals(String name){ // 此构造器只能用于初始化值
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public abstract void run();// 抽象方法不可以被实现,会报错
//        {System.out.println("动物都会跑");}// 不需要再实现方法
    public void fly(){
        System.out.println("会飞");
    }
}

// 子类
public class Pig extends Animals{
    public Pig(String name){
        super(name);
    }

    @Override
    public void run() {
        System.out.println("猪会跑");
    }
}

// 子类
public class Cat extends Animals{
    public Cat(String name){
        super(name);
    }

    @Override
    public void run() {
        System.out.println("猫会跑");
    }
}

// 测试类
public class Test {
    public static void main(String[] args) {
        Animals animals = new Animals() // 报错 无法实例化
        Animals a = new Pig("小猪");
        Animals b = new Cat("小猫");
        a.run();
        System.out.println(a.getName());
    }
}

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

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

相关文章

【Google Maps JavaScript API】Geolocation功能实现用户位置定位

文章目录 一、什么是Geolocation?二、Geolocation的应用场景三、如何使用Geolocation功能1. 初始化地图2. 编写初始化地图的JavaScript代码3. 代码解析初始化地图创建定位按钮获取用户位置处理定位错误 4. 样式设置5. 运行示例 四、注意事项五、总结 Google Maps Ja…

【GIT】Idea中的git命令使用-全网最新详细(包括现象含义)

原文网址:【GIT】Idea中的git命令使用-全网最新详细(包括现象含义) 文章目录 **命令1:查看当前所处分支:****命令2:拉取最新代码:****命令3:切换分支:****命令4&#xff…

AIOps探索 | 运维应急的六个阶段

当下,金融科技快速发展的时代,银行和金融机构的IT系统日益复杂,业务量呈指数式增长。面对这一挑战,运维应急已成为确保金融服务稳定性和可靠性的关键因素。 智能运维应急即在IT系统出现异常或故障时,快速发现问题、准…

【达梦数据库】数据库频繁崩溃记录-非dump分析

这里写目录标题 背景查找原因问题解决补充 背景 用户反映系统CentOS上的数据库频繁崩溃,系统没有崩溃过,希望帮忙分析下 查找原因 查看数据库运行日志:无任何报错 查看数据库错误日志:无报错 查看OS运行日志,/var…

EPLAN中如何制作标题页和封页?

EPLAN中如何制作标题页和封页? 如下图所示,我们打开EPLAN,新建一个项目,

开学季有什么必买的好物?提升学习效率的好物来啦!学生党必看!

对于即将开学的学生们来说,选择一款性价比高的电容笔是非常重要的。它不仅能够提升学习效率,还能带来更加流畅舒适的书写与绘画体验。接下来,我将推荐一款非常适合学生使用的电容笔,它不仅性能可靠,而且价格亲民&#…

大语言模型向量检索技术综述:背景知识、数据效率、泛化能力、多任务学习、未来趋势

预训练语言模型如BERT和T5,是向量检索(后续文中使用密集检索)的关键后端编码器。然而,这些模型通常表现出有限的泛化能力,并在提高领域内准确性方面面临挑战。最近的研究探索了使用大型语言模型(LLMs)作为检索器&#…

苹果机器人计划:能否成为智能家居的破局者?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

ADB 获取屏幕坐标,并模拟滑动和点击屏幕

本文声明:本文是参考https://blog.csdn.net/beyond702/article/details/69258932编制。同时,补充了在windows系统模式下,详细的获取屏幕坐标的步骤。 1.判断设备与windows电脑USB连接是否正常 在CMD窗口输入命令:ADB devices,按ENTER键,输出如下结果,则表示连接正常。 …

LLM大模型微调心得:全面经验总结与技巧分享

导读 模型越大对显卡的要求越高,目前主流对大模型进行微调方法有三种:Freeze方法、P-Tuning方法和Lora方法。本文总结了作者在ChatGLM-6B模型微调的经验,并汇总了目前各类开源项目&数据。 写在前面 大型语言模型横行,之前非…

Android经典实战之Kotlin的delay函数和Java中的Thread.sleep有什么不同?

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Kotlin 中的 delay 函数和 Java 中的 Thread.sleep 都用于暂停代码执行,但是它们用于不同的场景,并且有不同的实现和影响…

饭馆扫码点餐小程序什么方法进行开发

扫码点餐模式出现的时间已经比较久,其主要作用便是节约客商时间,客户自己点餐,商家响应餐品跟进,降低服务员长时间沟通成本,当然客户饭馆消费也不能只依靠工具,还是需要与服务结合,打造有温度的…

企业网络安全“九九八十一难”,且看XDR的黑!神!话!

近期,游戏《黑神话悟空》的热度攀升,不仅汇聚了全球玩家的目光,也悄然成为黑客及网络不法分子的目标。 游戏预热阶段,其剧情视频意外泄露,迅速在网络上引发热烈讨论与业内关注。随后,有黑客组织公开宣称将…

Tongweb8074+7049m4 安装TongFlowControl(by lqw)

文章目录 介绍安裝包和説明Tongweb8074 安装TongFlowControlTongweb7049m4 安装TongFlowControl 介绍 TongFlowControl是面向分布式服务架构的流量监控工具,是TongWeb基于QPS/并发数和调用关系的流量 控制功能,可在TongFlowControl控制台进行实时监控和…

pdf2md·技术调研

解析技术调研: 技术项源代码官方说明优/劣势补充1 VikParuchuri/marker (Star 14.9K) https://github.com/VikParuchuri/marker?tabreadme-ov-file 优点: 耗时少精度高(有ocr模型加持)缺点:…

【C++】类与对象篇四

【C】类与对象篇四 一 . 再谈构造函数1 . 构造函数体赋值2. 初始化列表3. explicit关键字 二 . static成员 【面试题】三 . 友元1. 友元函数2. 友元类 四 . 内部类 一 . 再谈构造函数 1 . 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中…

AI 大模型时代,对前端工程师有哪些机遇和挑战?

随着人工智能的发展,AI大模型为人工智能领域带来了巨大的机遇和挑战。前端工程师作为软件开发的重要一环,也需要关注 AI 大模型的发展趋势,并探索如何将其应用于前端开发和优化中。 AI 大模型应用广泛,已经深入到各个行业&#x…

数据结构——队的基本操作

一、顺序队 队的用法:先进先出 跟平时我们遇到的大多情况一样,队的主要思想就是先进先出,比如我去食堂打饭,我先排那么就是我先打到饭咯 顺序队:其实说白了就是一块空间用两个指针去指向,为了实现先进先…

如何获取页面的MP3文件

1、使用Google浏览器, 2、F12打开网页编程模式 3、找到network选项卡, 4、然后点击播放按钮,此时network中会加载各类资源; 5、在type中找到’media‘,点击media的名称; 6、找到request url&#xff1…

【AI绘画教程】StableDiffusion新手教程|5分钟搞定平面线稿转3D效果,100%成功(附教程工具)

大家好,我是画画的小强 曾经,我们对于将线稿转化为精美上色作品只能望而却步,然而如今,有了稳定扩散人工智能AI绘画工具(SD),我们可以以更加神奇的方式为线稿赋予绚丽的色彩,将创意…