【Java】抽象类详解

java定义两个动物抽象类 程序_java抽象类和接口详解 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。一、抽象类我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个... 阅读详情

(一)抽象类的定义

  • 如果至上而下在类的继承层次中上移,位于上层的类更具有通用性,甚至可能更加抽象。举个例子,考虑一下Employee类层次的扩展。一名雇员是一个人,一名学生也是一个人,(俩个类之间的关系如下图)为什么要花精力进行这样高层次的抽象呢?因为每个人都有一些诸如姓名这样的属性,因此我们可以将getName方法放置在位于继承关系较高层次的通用超类中。

在这里插入图片描述


(二)抽象类的操作与分析

(1)操作

  • 我们可以在Person里再添加一个getDescription方法,返回一个人的描述,为了提高程序的清晰度,包含一个及以上的抽象方法的类必须被声明为抽象的。抽象类还可以包含具体数据和具体方法
public abstract String class Person{
	private String name;
	public Person(String name){
		this.name=name;
		}
	public abstract String getDescription();
	public String getName(){
	return name;
	}
}
  • 下面是一个扩展抽象类Person的具体子类Student,这个类定义了getDescription方法
public class Student extdens Person{
	private String major;
	public Student(String name,String major){
	super(name);
	this.major;
	}
	public String getDescription(){
	return "a student major in"+major;
	}
}

(2)分析

  • 类即是不含抽象方法,也可以声明为抽象类。
  • 抽象类不能实例化,就不能创建这个类的对象。
//实例化对象
new Peroson("Vince Vu");
  • 但是可以创建一个具体子类的对象,需要注意,可以定义一个抽象类的对象变量,但是他只能引用非抽象子类的对象,例如:
//测试类
//这里p是一个抽象类Person的变量,Person引用了一个非抽象子类Student的实例
public class Test{
	public static void main(String [] args){
	Person p =new Student("小明",“数学”);
	System.out.println(p.getDescription());
	}
}

上面中你可能会有个疑问,这不是调用了一个没有定义的方法吗 p.getDescription(); 记住由于不能构造抽象类Person的对象,所以p永远不会引用Person对象,而是引用Employee或Student这样的具体子类对象,如上上述中p指向Student类,输出学生信息,如果指向Employee类,则输出员工信息。


(三)抽象类总结(重点知识)

  1. 象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
SigmaStudio进阶技巧:如何用ADAU1701实现60段EQ与防啸叫算法 本文深入探讨了如何在ADAU1701 DSP芯片上实现专业级音频处理系统。通过精密的资源规划与架构设计,详细讲解了构建高达60段参数均衡器(EQ)的有效方法,并集成了移频与自适应陷波双策略的智能防啸叫算法。内容涵盖从SigmaStudio工程优化、算法模块组合到系统联调实战的全流程,旨在帮助中高级开发者充分利用ADAU1701性能,打造稳定、高效的音频处理解决方案。 阅读详情

相关推荐

APP抓包-代理转发绕过反代理+Xposed绕过证书校验

而这里的牛牛不止设置了反代理还设置了证书校验,一闪而过的三个数据包就是在校验证书。而proxifier工具的转发机制获取的是网络接口出口数据,相当于是在网络接口设代理。这个时候就可以在夜神打开牛牛开始抓包了,打开牛牛可以看到proxifier有夜神流量通过。关闭代理之后牛牛就正常了,可恶的牛牛啊,这样我没办法抓包啊,怎么办啊。模拟器开启代理,burp开启监听。打开牛牛app,牛牛不在报错。牛牛app检测的是系统代理,也就是在模拟器或手机上设置的代理。再在浏览器下载两个模块,在夜神安装,用来屏蔽证书校验。

xiaoheizi的博客 7530

Java学习笔记——(类)File

文件和目录(文件夹)的路径名的抽象表示形式。 File类代表磁盘上某一文件或文件夹(目录) File对象代表通过某一路径确定的文件或文件夹 创建File对象时需要传入路径 file.separator :默认分隔符 路径: 绝对路径:自己指定的路径 相对路径:相对的是当前项目 Windows默认每个文件都可读,不能设置为不可读,但可以设置为不可写;所有.exe文件都默认可执行 构造方法 File(String pathname) :通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 Fi

black_wangyk的博客 385

利用python爬取东方财富网股吧评论并进行情感分析(一)

利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直

YMG521000的博客 1万+

java基础知识菜鸟学习第二十八天——Java抽象类返回值使用终结版

Java抽象类使用的总结 在学习到Java常用类的时候,很多都是抽象类,没有办法使用抽象类中的方法,就需要去找到父类中的static getInstance();方法返回子类对象,这个时候,很多人就有点蒙,为什么要这样做?不可以通过new出一个子类对象来调用父类方法吗?这时候就需要深度知道抽象类中的返回值的问题,简而言之,子类是怎么样实现抽象父类的方法呢? 抽象类的基础知识在前面博客已经发了,这里...

QZP51ZX的博客 749

基于立创开源ESP32步进电机驱动板硬件设计与优化实践

本文详细介绍了基于立创开源平台的ESP32步进电机驱动板硬件设计与优化实践。重点解析了ESP32-PICO-D4与A4950驱动芯片的选型搭配、电源电路噪声隔离、PCB布局布线技巧以及保护电路设计,为开发者提供了从原理图到PCB的完整优化方案,有效提升驱动板的性能与稳定性。

7z8x2c4v6b9的博客 645

从ADS到HFSS:耦合线带通滤波器的设计与模型转换实战

本文详细介绍了耦合线带通滤波器的完整设计流程,重点阐述了从ADS电路级快速优化到HFSS三维电磁场精确验证的模型转换实战方法。通过对比ADS理想模型仿真与HFSS全波仿真结果,指导读者进行参数校准与迭代优化,并分享了关键的板材选择、加工误差及端口设置等避坑指南,确保设计性能与实物测试高度一致。

weixin_29290863的博客 344

javaSE-第171篇-抽象类主人喂宠物

1)为什么定义抽象类 对事物进行进一步抽象可以形成抽象类 含有抽象方法的类必须定义为抽象类 2)如何定义抽象类 使用sbstract修饰的类 3)为什么定义抽象方法? 当一个类的某个操作无法具体实现时,这个操作可以定义为抽象方法 使用abstract修饰方法,只有方法的声明,没有方法体 4)如何使用抽象类 抽象类一般作为其他类的父类存在 子类继承了抽象类...

java孤独求败的博客 1125

学习C++的递归函数(包含汉诺塔讲解)

简单来讲,递归函数就是函数本身自己调用自己,那么函数又是什么呢?#include <stdio.h> //这行是头文件,不同的头文件可以用不同的函数int main() //这里就是一个main函数//这里是你要编写程序的内容return 0;(这是个小细节如下)所以我们平时用来练习的就是一个main函数,而且是一个整型类型的函数,而这也是最后一句话为什么要加一句 return 0;了,因为它最后要返回整数类型,其它整数也可以,但是大家规定为0,这是C++自带的函数。

2302_81032013的博客 2594

java getname方法,如何调用getName方法

问题是这样的,我看到原来有一个方法是根据java的name的名称调用getName()这个方法。然后方法的实现是使用字符串的判断来实现的代码如下:public Object getOrderby() {if (ORDER_TITLE.equals(this.ordered)) {return getTitle();} else if (ORDER_RENDERDATE.equals(this.or...

weixin_34952628的博客 1901

从零构建:Simulink与PX4的快速原型开发实战

本文详细介绍了如何利用Simulink与PX4进行四旋翼无人机的快速原型开发,涵盖环境搭建、动力学建模、控制器设计、仿真验证及自动代码生成全流程。通过实战案例展示姿态控制器的实现与调试,帮助开发者高效完成从算法设计到硬件部署,显著提升开发效率并降低试错成本。

plant的博客 323

uniapp - 实现苹果App打包上架App Store应用商店详细教程,详解Hbuilder打包编译ipa发布上传到苹果ios软件商店全流程,提供云打包/离线本地打包ios、申请IOS苹果证书方法

uni-app,苹果ios,苹果app,打包编译,appstore应用商店,ipa发布到软件商店,uniapp的app苹果应用商店上架,上架苹果APPStore,uniApp打包的ipa文件上传到商店,上架苹果商城,审核失败,被拒绝,UniApp打包ipa文件,上架iOSAppStore流程指南,最新详细教程最全,Hbuilder打包发布iosapp,苹果云打包上线全过程,云打包IPA并上传到商店,打包iOSipa文件后怎么发布到应用商店,苹果证书申请教程,ios证书申请,mac电脑,审核很久

🏆 前端领域优质创作者 1万+

从头认识java-1.1 编程语言抽象过程以及java的基础特性

这一章节我们来简单的聊聊对象抽象的过程。 1.所有语言都提供抽象机制。 例如:a=1(下面都是举例子,里面所提及的内容有可能是错误的,因为笔者没学过机器码和汇编) 在机器码当中:1000100111011000 在汇编当中:mov a,1 在C语言当中:a=1 在java当中: class Test(){ a=1; } 从上面的不同的表示里面可以发现,语言都是在不断的抽象,从最开始的0和1...

raylee2007的专栏 217

n8n AI高效工作流自动化 部署使用教程

摘要: n8n是一款开源可视化工作流自动化工具,结合AI能力可高效解决重复性任务。文章详细介绍了从Docker部署到实战应用的完整流程:1)通过Docker Compose自托管n8n,确保数据可控;2)以AI客服日报机器人为例,演示如何串联工单系统、ChatGPT和邮件通知,实现定时自动化;3)进阶搭建交互式AI助手,利用ToolsAgent节点调用业务API;4)整合向量数据库构建RAG知识库问答。关键建议包括:拆分复杂工作流、严格管理凭据、区分开发与生产环境,并建议从高频刚性需求(如日报生成)切入,逐

专注AI大模型,软件混淆,授权 266

java 抽象类 详解

java 抽象类 内容分享,本篇博文为java 面向对象三大特性——多态篇的补充。

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java 抽象类 详解

在Java中使用最多的就是类,类用于抽象一类事物,是将现实世界的事物通过抽象的方式给描述成为一个类,该类具有这一类事物的属性和行为,通过new关键字可以实例化类,在程序世界中按照类的描述创建一个对象。而当一个类提供的信息不足以实例化一个具体的对象时,或者说当前类的行为不符合具体对象的行为时,我们是不会将当前类实例化对象的,这种类一般被定义为抽象类

L326214的博客 2242

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java抽象类 <详解>

包含抽象方法的类我们称为。

Zhongweihong123的博客 981

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java——抽象类详解

抽象类1.1概述1.2抽象(abstract)使用格式注意事项: 1.1概述 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。 定义 抽象方法: 没有方法体的方法。 抽象类:包含抽象方法的类。 1.2抽象(abstract)使用格式 抽象方法 使用sbatract关键字修饰方法,该方法就是抽象方法。抽象方法只包括方法名,没有方法

韩小兔修媛史的博客 315

Java抽象类详解

本文深入讲解了Java抽象类的核心概念与设计思想。通过代码示例详细介绍了抽象类的语法特性:1)使用abstract关键字定义,可包含成员变量、构造器、抽象方法(无实现)和普通方法;2)不能被实例化,子类必须实现所有抽象方法(除非子类也是抽象类);3)构造器用于子类初始化。文章通过动物叫声和饮料制作两个案例,展示了抽象类在代码复用、约束子类行为以及模板方法模式中的应用价值,特别是如何通过抽象方法强制子类实现特定功能,同时保留通用的方法流程。

留白Blank的博客 261

java 抽象类_详解JAVA 抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类...

weixin_39764603的博客 89

Java 抽象类详解

抽象类使用abstract关键字修饰,不能被直接实例化,只能作为其他类的基类。抽象方法用abstract关键字修饰,只声明方法签名,不提供方法体。抽象方法必须在抽象类中声明,子类需要实现这些方法。类使用extends关键字继承抽象类,并实现抽象类中的抽象方法。如果子类没有实现所有的抽象方法,那么子类也必须被声明为抽象类。抽象类是Java面向对象编程的重要组成部分,通过定义抽象类,可以实现代码的高度抽象和灵活性。抽象类不能被实例化,只能作为其他类的基类。

yimeixiaolangzai的博客 589

Java抽象类 详解

一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修

wei_zhi的博客 19万+

java抽象类的属性_java抽象类详解

前言在没讲抽象类之前 我们先来看看 final关键字final 修饰符 可以修饰 类、属性、方法修饰类时 表示该类不能被继承 其他特征 跟普通的类一样修饰 属性时 表示 改属性不能改变 并且 必须赋初始值修饰方法时 表示该方法不能被重写什么是抽象类?为什么要使用抽象类?当我们在写继承时 一般实现时用不到父类 不需要实例化对象 这个时候我们就把这个父类定义为抽象类也就是说抽象类本身没有...

weixin_29769523的博客 4128

Java-抽象类详解

1、抽象类基本概念 2、抽象类语法 3、抽象类特性 4、抽象类和普通类之间的关系

linsc_05的博客 769

Java中的抽象类如何理解——详解

本篇文章主要讲解了Java中的抽象类的概念、应用情景、抽象类的特点、模板方法模式。希望能够对你在Java的学习过程之中起到一定的帮助。

weixin_50635856的博客 3009
上一篇: 【Java】final关键字详解
下一篇: 【Java】Object类详解(equals hashCode toString)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值