抽象类:抽象类是类的一种特殊的情景,这个普通类的区别在于抽象类是不能实例化对象,但是类的其他的功能它依然有,比如说成员函数,成员变量,构造方法都是和普通的函数一样。特别注意的是抽象类是一种继承关系,并且一个类只能继承一个抽象类。
如何定义一个抽象的类:
public abstract class class_Name{
类体;
}
下面我们通过一个例子来演示一下抽象类,以及实现抽象类的继承:
public abstract class Emplyee { private String name; private String address; private int number; public Emplyee(String name,String address,int number){ this.name=name; this.address=address; this.number=number; } public double computePay(){ System.out.println("Inside Employee computePay"); return 0.0; } public void mailCheck() { System.out.println("Mailing a check to"+this.name+" "+this.address); } public String toString() { return name+""+address+""+number; } public String getName(){ return name; } public String getAddress(){ return address; } public int getNumber(){ return number; } public void setName(String name){ this.name=name; } public void setAddress(String address){ this.address=address; } public void setNumber(int number){ this.number=number; } }在定义抽象类的时候我们需要实现的抽象类的封装,也就是将里面的成员变量的一些set和get方法要写好,以及构造方法,其实构造方法到现在为止其实其目的就是给类中的成员变量进行初始化,有这些功能,一个类可以有多个构造方法。现在我们创建一个Salary类继承Employee类:
class Salary extends Emplyee { private double salary; public Salary(String name, String address, int number, double salary) { super(name, address, number); setSalary(salary); } public void setSalary(double salary) { this.salary = salary; } public double getSalary() { return salary; } public static void main(String args[]) { Salary s = new Salary("alec", "河南省夏邑县杨集镇", 25, 10000.0); Emplyee emplyee = new Salary("xiaoming", "张家港", 24, 9000); System.out.println(s.getName()); System.out.println(emplyee.getAddress()); } }
Salary类的构造方法,需要调用父类的构造方法,当然调用一个构造方法就可以了,我们用的super()参数是我们父类的构造方法的参数。我们看Salary类中的主函数,我们要知道我们可以创建Employee的对象,但是new的时候是用的Salary,其实这一点用C++里面的地址的思想是比较好理解的,创建一个对象也就是向系统申请一段内存,用来存储对象,当我们想系统申请Employee的时候系统就会分配一段内存Size(Employee),但是因为继承关系创建一个Salary对象也会向系统申请一段内存也是Size(Employee).因为继承关系,所以系统不会申请去开辟两个空间。
但是我们在里面创建的两个对象,其使用都是一样的。
文章浏览阅读7.2k次,点赞3次,收藏15次。成功解决Could not import the PyAudio C module '_portaudio'.目录解决问题解决思路解决方法解决问题Could not import the PyAudio C module '_portaudio'.Traceback (most recent call last): File "F:\File_Python\Python_daydayup\20200531.py", line 14, in <..._could not import the pyaudio c module 'pyaudio._portaudio'.
文章浏览阅读2.8k次。作为一名整天被各种项目虐得发际线不断后移的项目经理,对于项目管理工具,我是认真的。然而,混迹某些交流群中,时不时碰到有人询问推荐在线项目管理工具,总有人出来说:钉钉。纳尼?钉钉在我眼里真不算是项目管理工具,只是任务管理协同工具。说到这里就要啰嗦专业项目管理工具和任务管理协同工具的区别了。专业项目管理工具一般是遵循国际项目管理理论如PMBOK、PRINCE2,在此方法论之下研发建构,有企业级项目管..._钉钉项目管理优缺点
文章浏览阅读186次。购买流程:购买之前说明所需品类、区域,我们将按需报价。标价不是售价带需求来私,保证相对价格最低,字段相对最全。大众点评数据:2023年9月全国全品类大众点评数据,涉及468个品类,包括诸如美食、购物、酒店、商场等等数据。数据字段:包括店铺详情、评论推荐、优惠活动、位置信息等四大板块字段,内涵明细字段。数据用途:适用于行业分析、店铺选址、高校科研等等。
文章浏览阅读185次。这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是毕业设计 stm32火灾监控报警系统(源码+硬件+论文)学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:3分创新点:4分项目分享:见文末!包含内容项目分享:见文末!_基于stm32的智能火灾报警系统与设计的论文
文章浏览阅读1.1w次,点赞7次,收藏50次。python怎么输出等边菱形## 标题Ctrl/Command + Z在这里插入代码片在这里插入图片描述_python语言用*打印菱形
文章浏览阅读924次。 简而言之,Windows CE其实就是一个操作系统。它是一个抢先式多任务并具有强大通信能力的Win32嵌入式操作系统,是微软专门为信息设备、移动应用、消费类电子产品、嵌入式应用等非PC领域而从头设计的战略性操作系统产品。 你也许会有一点奇怪,为什么微软会推出这个Windows CE呢? 不知你是否注意到,在我们的日常生活中,人们开始普遍使用手机、PDA、手持和掌上电脑等信息电器_windows ce
文章浏览阅读9.5w次,点赞243次,收藏526次。杀熟,劳神伤财,废旧利用,性能对比,费用,灵活性,优化,缺点,开机吧,少年,局域网访问,外网访问最终迁移_网站服务器配置
文章浏览阅读173次。报错原因,在线安装器需要从sourceforge上面下载文件,但是网络不稳定,99%都会报错。把软件安装在D盘,此时路径为:D:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0。点击 文件-首选项-设置,进入设置页面后依次选择如下,把运行在终端,运行前保存所有文件,运行前保存当前文件,三个选项勾选。4.2 先用快捷键ctrl+shift+P调出命令窗口,选择C/C++:编辑配置(UI)4.1 配置代码运行选项。_vscode配置c/c++开发环境
文章浏览阅读1.8k次。Python 实现面向对象特性的方式不同于其他 OOP 语言,比如 Java 或 C++。Python 没有显式的获取器和设置器方法,而是具有允许您验证属性或使属性为只读的属性。Python 还允许您通过它的魔术方法重载它的操作符,这些方法以双下划线字符开始和结束。我们使用数值和反射数值魔术方法重载常见的数学运算符。这些方法为 Python 的内置操作符提供了一种处理您创建的类的对象的方式。如果它们不能处理操作符另一端的对象的数据类型,它们将返回内置的值。_oop 属性
文章浏览阅读183次。1、主成分分析法(PCA)思想及原理1.1什么是主成分分析法PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法(非监督的机器学习方法)。其最主要的用途在于“降维”,通过析取主成分显出的最大的个别差异,发现更便于人类理解的特征。也可以用来削减回归分析和聚类分析中变量的数目。1.2为什么要做主成分分析在很多场景中需要对多变量数据进行观测,在一定程度上增加了数据采集的工作量。更重要的是:多变量之间可能存在相关性,从而增加了问题分析的复杂性_pca sklearn 方法
文章浏览阅读1.3w次,点赞4次,收藏7次。libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的,可在Windows、Linux、Mac、Android等操作系统,x86、x64、arm架构上进行编译运行,支持SSE、AVX、NEON等SIMD指令加速。最近手上有个项目需要把RGB像素转换为YUV I420,得知libyuv采用了CPU的SIMD指令集,可以大幅提高转换的效率,减少耗时_ninja编译 libyuv
文章浏览阅读630次。【代码】Ubuntu 20.04 笔记本无法调节亮度解决方法。_ubuntu20.04亮度调节