Java:抽象类笔记

抽象类:类中没有包含足够的信息来描绘一个具体的对象。

为什么要创建抽象类?

为了更好的继承,以后能更好的扩展,减少类与类之间的耦合。

什么时候需要创建一个抽象类?

(简单粗暴的理解)某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现, 那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类。

tips: 1. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。如何理解?

        2.抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

如何创建抽象类?

就像写文章先建立大纲一样:创建3个java文件。

1. 父类 - 抽象类: Employee.java 文件。

2. 子类 - 继承抽象类: Salary.java 文件。

3. 实例化子类: SalaryList.java 文件。

再根据大纲填充内容。

首先来填充抽象类的内容。

抽象类可以声明变量、成员方法、和构造方法。

public abstract class Employee {private String name;private String address;private int number;public Employee(String name, String address, int number){this.name = name;this.address =address;this.number = number;}public double 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 void setAddress(String newAddress){address = newAddress;}public String getName(){return name;}public String getAddress(){return address;}public int getNumber(){return number;}}

再来看子类如何继承:

  任何子类必须重写父类的抽象方法,或者声明自身为抽象类

public class Salary extends Employee {private double salary;public Salary(String name, String address, int number, double salary){super(name, address, number);setSalary(salary);}public void mailCheck(){System.out.println("Within mailCheck of Salary class");System.out.println("Mailing check to " + getName() + " with salary " + salary);}public double getSalary(){return salary;}public void setSalary(double newSalary){if(newSalary >= 0.0){salary = newSalary;}}//    @Override  伪代码,表示重写(不写也可以),写上的好处://可以当注释用,方便阅读;编译器可以帮你检查方法的方法名是否父类中所有的,如果没有则报错//如果你不加@Override,则编译器将不会检测出拼写错误,而是会认为你为子类定义了一个新方法:public double computePay() {
//        return super.computePay();System.out.println("Computing salary pay for " + getName());return salary/52;}
}

最后实例化:

  继承了抽象类Employee的子类Salary的实例化

public class AbstractDemo { //继承了抽象类Employee的子类Salary的实例化public static void main(String [] args){Salary s = new Salary("aaa", "Beijing", 2, 5.0);Employee e = new Salary("bbb", "Beijing", 3, 6.0);s.mailCheck();e.mailCheck();}
}

 

转载于:https://www.cnblogs.com/dodocie/p/7447437.html

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

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

相关文章

ios触摸超出_iOS开发笔记之多点触控(一)处理触摸的4个方法

多点触控乃苹果公司带给世界的创新之首,作为移动开发者,熟练掌握多点触控开发技能很有必要。处理触摸的四个方法:-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event //首次在屏幕上检测到触摸时调用{NSLog("touchesBega…

机器学习数据包之numpy

numpy 属性 import numpy as np#矩阵运算arraynp.array([[1,2,3],[2,3,4]])print (array)[[1 2 3][2 3 4]]维度 print(number of dim,array.ndim)number of dim 2形状 print(shape,array.shape)shape (2, 3)大小 print(size,array.size)size 6创建 创建类型 anp.array([…

RK 利用SARADC 来做多个按键

#DTS配置#配置DTS节点#驱动文件中匹配 DTS 节点#驱动说明#获取ADC通道#获取ADC值#计算采集到的电压#接口说明#调试方法#节点ADC值RK3399开发板上的 AD 接口有两种,分别为:温度传感器 (Temperature Sensor)、逐次逼近ADC (Successive Approximation Regis…

vslabel隐藏了怎么找_vscode菜单栏与工具栏隐藏之后怎么找回来

vscode菜单栏与工具栏隐藏之后怎么找回来,命令行,菜单栏,教程,相关文章,设置为vscode菜单栏与工具栏隐藏之后怎么找回来易采站长站,站长之家为您整理了vscode菜单栏与工具栏隐藏之后怎么找回来的相关内容。找回菜单栏1、按alt可以显示菜单栏;2、可以在命…

概率论之pandas

快速入门 1 import numpy as npspd.series([1,3,5,np.nan,8,4])Series spd.Series([1,3,5,np.nan,8,4])sOut[6]: 0 1.01 3.02 5.03 NaN4 8.05 4.0dtype: float64date_range datespd.date_range(20190301,periods6)datesOut[10]: DatetimeIndex([2019-03-…

学习,一定是脱“贫”致富的捷径

周末加班,加班后觉得有点无聊,到公司阳台坐了坐,想到最近的工作和生活,也理了理最近的状态,然后分享了一段话在知识星球里。如下:我平时很少静下来想东西,其中一个原因是因为我害怕安静,晚上睡觉…

多模态语义分析_「CV学霸开讲」卷积神经网络压缩、多模态的语义分析研究

原标题:「CV学霸开讲」卷积神经网络压缩、多模态的语义分析研究【新智元导读】2017年度百度奖学金10位候选人中,人大的陈师哲和北大的王云鹤所学专业主要集中在计算机视觉,本文将详细呈现CV学子的求学经历和研究感悟,并独家分享他…

人应该活成什么样子?该以什么方式活着?

“您幸福吗?”“我是外地打工的,不要问我。”“您幸福吗?”“我姓曾。”相信大家还记得这段央视走基层采访的经典问答。“幸福是什么”是一个人类社会中被广泛讨论的话题,人要怎么生活才能获得幸福,一直是众生要追寻的…

DB2操作指南及命令大全word版

《DB2操作指南及命令大全word版》下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731432.html

rocketmq存储结构_RocketMQ消息存储

存储架构RMQ存储架构上图即为RocketMQ的消息存储整体架构,RocketMQ采用的是混合型的存储结构,即为Broker单个实例下所有的队列共用一个日志数据文件(即为CommitLog,1G)来存储。Consume Queue相当于kafka中的partition,是一个逻辑队…

MIPI白皮书

#mipi 5G中优势#5G手机中的mipi#mipi#背景2020年 是5G元年,很多行业因5g重新定义。显示行业也不例外,针对5G,mipi联盟发表了对应的白皮书 描述了现有的MIPI规范如何能够支持第一代5G智能手机以及其他新兴的5G移动平台,包括互联/自…

Python 如何调用 Java

引用了这个文章,请打开链接 http://www.cnblogs.com/junrong624/p/5278457.html 日后待补写 。。。转载于:https://www.cnblogs.com/houzhizhe/p/7456843.html

redis rdb aof区别_Redis 持久化之 RDB 与 AOF 详解

走过路过不要错过点击蓝字关注我们文章出处:https://www.cnblogs.com/jojop/p/13941195.htmlRedis 持久化我们知道Redis的数据是全部存储在内存中的,如果机器突然GG,那么数据就会全部丢失,因此需要有持久化机制来保证数据不会因为…

块设备驱动初探

前言研究IO也很久了,一直无法串联bio和块设备驱动,只知道bio经过IO调度算法传递到块设备驱动,怎么过去的,IO调度算法在哪里发挥作用,一直没有完全搞明白,查看了很多资料,终于对块设备驱动有所理…

Java打war包or打jar包

//一个jar包可以包含多个entry,这样就能实现下面功能1.I/O 读文件流步骤 File filenew File(filePath);InputStreamReader read new InputStreamReader(new FileInputStream(file));BufferedReader bufferedReader new BufferedReader(read);String lineTxt…

Linux 块设备,Block Layer层架构演变

前言Block Layer层在整个I/O中负责承上启下,上接文件系统,下接块驱动。我不想直接讨论代码,希望从一个架构的演变来初探一下Block Layer层。一、1.0版本首先我们来了解几个重要的数据结构1.1 biobio代表了一次I/0请求,代表一个块设…

回溯 皇后 算法笔记_算法笔记-回溯法

(1)0-1背包问题思路:构造一个二叉树,每个商品都有两种状态,要或者不要。如果要就在这个节点的左枝挂子节点,如果不要就在右节点挂子节点。如果全部商品都分配完状态之后就回溯,回溯到一个还有其他选择的节点&#xff0…

Quartz集群

前言 前面说到过项目使用到了Quartz,当项目部署到多节点后,同样的调度任务会被重复执行,这时候就需要用到集群了。 集群配置 quartz.properties # # Configure Main Scheduler Properties # org.quartz.scheduler.instanceName me #ID设置为…

matalotlib(2)

文章目录注释文字Tex公式区域填充极坐标注释 import matplotlib.pyplot as plt import numpy as np xnp.arange(-10,11,1) yx*x plt.plot(x,y)plt.annotate(this is the bottom,xy(0,1),xytext(0,20),arrowpropsdict(facecolorr,frac0.2)) plt.show()文字 import matplotlib…

去华为吗?

昨晚的这条朋友圈很多人给我回复,支持去华为的人很多,但是也有几个反对的,一个说,怕是有命赚钱,没命花钱吧。还有一个说,自己拿到了华为offer,但是拒绝了,去了一个做开关电源的公司做…