Java学习21--abstract抽象类

abstract抽象类

在Java中,abstract 是一个关键字,用于定义抽象类abstract class或抽象方法abstract method。abstract class是一种特殊的class,它不能用来建立具体的object,即不能实例化对象。abstract class通常用作其他类的基类,这些child class会提供abstract class中声明的abstract method的具体实现。

换言之,abstract抽象类就是搭建大框架用的,各个method具体怎么执行可以不管。先把大结构弄出来再说。

例如 abstract 一个人{
abstract 脑袋method{具体怎么构造脑袋method,让别人去写吧};
abstract躯干method{具体怎么完成躯干method,让别人去写吧};
abstract四肢method{具体怎么完成四肢method,让别人去写吧};
👋method{非abstract method 👋method具体实现如下: 手需要XX个骨头神经元这样连接...};
abstract脚method{具体怎么完成脚method,让别人去写吧};}

以下是关于Java abstract class的几个关键点:

  • abstract method:abstract class中可以包含abstract method(使用 abstract 关键字定义的class),也可以包含non-abstract method(即具有方法体的method)。
  • abstract method没有方法体,只有方法签名。child class必须提供abstract method的实现,除非child class本身也是abstract class。

public abstract class AbstractClass {  public abstract void abstractMethod(); // 抽象方法  public void nonAbstractMethod() {  // 非抽象方法的实现  }  }
  • abstract class 实例化:由于abstract method不能实例化(不能建立新的object对象),因此你不能使用 new 关键字来创建abstract class的object。abstract class只能作为其他class的基class使用。

AbstractClass obj = new AbstractClass(); // 错误,不能实例化抽象类
  • 继承抽象类:任何child class 都可以继承一个abstract class,除非这个child class是final的。如果child class不是abstract的,那么它必须提供abstract class中所有abstract method的实现。

public class SubClass extends AbstractClass {  @Override  public void abstractMethod() {  // 提供抽象方法的实现  }  }
抽象类中的字段:抽象类可以包含Field(字段),这些字段Variable可以是实例字段(非静态字段)或静态字段。子类可以访问这些字段,就像它们访问普通类的字段一样。==抽象类与接口==:虽然抽象类和接口都不能用来创建具体object,并且都可以定义abstract method,但它们之间有一些重要的区别。
抽象类可以包含字段和method的具体步骤,而接口不能。
此外,一个class可以实现多个接口,但一个子class只能extends一个abstract class(Java不支持多重继承)。
  • 抽象类的用途:抽象类通常用于定义一种行为模式,让子类来遵循这种模式。通过抽象类,你可以定义一些通用的属性和方法,并在需要时让子类来提供特定的实现。使用抽象类可以实现代码的重用和模块化,同时保持代码的灵活性和可扩展性。

特点总结:

  • 子类需要extends abstract class抽象类,所以只能单方向单继承(接口可以多继承)
  • abstract class不能用来new object,其内部想做的method要么自己实现,要么靠子类去实现
  • abstract class里面可以写普通的method并且自己完成其内容
  • abstract method必须写在abstract class中

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

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

相关文章

关于idea无法检测出lombok,导致代码爆红的处理

为啥需要本地安装lombok插件? 编译错误提示:Lombok 使用注解来自动生成代码,这些代码在编译时会由 Lombok 插件进行处理。如果没有安装 Lombok 插件,IDEA 在编译过程中可能会报告错误,因为它无法识别并处理 Lombok 注解…

【RL】Bellman Optimality Equation(贝尔曼最优等式)

Lecture3: Optimal Policy and Bellman Optimality Equation Definition of optimal policy state value可以被用来去评估policy的好坏,如果: v π 1 ( s ) ≥ v π 2 ( s ) for all s ∈ S v_{\pi_1}(s) \ge v_{\pi_2}(s) \;\;\;\;\; \text{for all…

Python数据科学:Scikit-Learn机器学习

4.1Scikit-Learn机器学习 Scikit-Learn使用的数据表示:二维网格数据表 实例1:通过Seaborn导入数据 def skLearn():scikit Learn基本介绍:return:import seaborn as sns#导入Iris数据集#注:一般网络访问不了iris sns.load_dataset(iris)ir…

【JavaScript】回调函数

文章目录 1. 什么是回调函数2. 回调函数的用法作为函数参数作为匿名函数 3. 处理异步编程4. 解决回调地狱问题5. 总结 在 JavaScript 中, 回调函数是一种重要的编程模式,特别是在处理异步操作时。本篇博客将介绍回调函数的概念、用法以及在异步编程中的…

Jdk11新增特性

目录 模块化系统(Jigsaw) 新的垃圾收集器(ZGC和Shenandoah) 新的API和工具 其他改进 JDK 11(Java Development Kit 11)Java的版本引入了一些新特性和改进,主要有:

助眠神器小程序源码|白噪音|小睡眠|微信小程序前后端开源

安装要求和说明后端程序运行环境:NginxPHP7.4MySQL5.6 PHP程序扩展安装:sg11 网站运行目录设置为:public 伪静态规则选择:thinkphp 数据库修改文件路径:/config/database.php需要配置后端的小程序配置文件,…

[word] word分割线在哪里设置 #其他#经验分享

word分割线在哪里设置 在工作中有些技巧,可以快速提高工作效率,解决大部分工作,今天给大家分享word分割线在哪里设置的小技能,希望可以帮助到你。 1、快速输入分割线 输入三个【_】按下回车就是一条长直线,同样分别…

webgis后端安卓系统部署攻略,超详细Termux攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

webpack面试解析

参考: 上一篇webpack相关的系列:webpack深入学习,搭建和优化react项目 爪哇教育字节面试官解析webpack-路白 1、Webpack中的module是什么? 通常来讲,一个 module 模块就是指一个文件中导出的内容,webpack…

什么是系统工程(字幕)27

0 00:00:00,990 --> 00:00:03,590 那么下一个在16.4 1 00:00:03,590 --> 00:00:06,190 16.4是描述需求嘛 2 00:00:06,190 --> 00:00:06,970 对不对 3 00:00:07,250 --> 00:00:07,501 4 00:00:07,501 --> 00:00:10,520 在那个教材里面是描述需求 5 00:00:11,…

android--RxJava源码详解

其实所有的节日都不是为了礼物和红包而生,而是为了提醒我们,不要忘记爱与被爱,生活需要仪式感,而你需要的是在乎和关爱 目录 前言 一,Hook点 二,RXJava的观察者模式 三,Map操作符原理 前言 关于…

Amber-Leedcode-Java - 代码随想录打卡第38 - 39天-动态规划汇总

本质上感觉是一个相加的问题,状态的转换,由前一种状态推至下一种状态509. 斐波那契数 较为简单 746. 使用最小花费爬楼梯 62. 不同路径 一开始写的时候被吓到了,但是发现听完一半之后再写还是比较容易的 对于我而言主要是找到逻辑&#xf…

Linux文件属性与目录等知识详解

在 Linux 系统中,文件和目录是基本的文件系统组成部分。文件系统是用于组织和存储文件的一种结构,而文件和目录则是文件系统的核心元素。以下是对 Linux 文件和目录的详细解释: 1. 文件(File) 在 Linux 中&#xff0…

Vue3+Ant-Design-Vue:报错Cannot read properties of null (reading ‘isCE‘)

问题描述 在使用Ant-Design-Vue内置的Table表格组件,实现expand展开行功能时,报错:Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘) 。 报错信息图示: 在GitHub上找到如下描述, 解决方案 网上…

【漏洞复现】和为顺IP-COM WiFi未授权下载漏洞

Nx01 产品简介 深圳市和为顺网络技术有限公司是一家聚焦于商用级网络通信设备的研发与应用,为全球中小型企业提供高速、安全、易维护的网络设备产品和解决方案的公司。 Nx02 漏洞描述 深圳市和为顺网络技术有限公司IP-COM WiFi方案解决专家存在任意文件下载漏洞&am…

代码随想录算法训练营29期Day50|LeetCode 70,322,279

文档讲解:爬楼梯(进阶) 零钱兑换 完全平方数 70.爬楼梯(进阶) 题目链接:https://kamacoder.com/problempage.php?pid1067 思路: 这其实是一个完全背包问题。1阶,2阶&#xff0c…

编曲学习:录音设备的选取,麦克风和声卡,监听耳机

如果要录翻唱歌曲或原创歌曲人声的话,哪款麦克风或声卡比较好,性价比比较高? 可以尝试一下福克斯特声卡,和舒尔sm58动圈麦。之前问了一些大佬,有人用的是莱维特 540s。 我一直有点疑问,便宜声卡与麦克风&…

springsecurity6使用

spring security 中的类 : AuthenticationManager : 实现类:ProviderManager 管理很多的 provider ,,, 经常使用的,DaoAuthenticationProvider , 这个要设置一个 UserDetailService , 查找数据库&#xff…

java正则表达式获取json字符串中指定key的value

<仅支持取JSON字符串中, 简单属性值的配置, 即值内容中不包含[]或{}格式的数据> import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.…

【ASP.NET 6 Web Api 全栈开发实战】--前言

《ASP.NET 6 Web Api 实战》专栏通过一步一步的开发并完善一个记账软件项目&#xff0c;来引导大家学习相关的知识&#xff0c;其中的知识包括但不限于如下内容&#xff1a; Web Api 开发.NET 6 项目微服务架构的搭建身份认证移动端应用开发more。。。 专栏结构 专栏分为单体…