Java之路---Day10(抽象)
2019-10-24-23:21:17
目录
1.抽象的方法
2.抽象类
3.抽象类和抽象方法的使用
4.抽象类的注意事项
5.案例代码
1.抽象的方法
What:如果父类当中的方法不确定如何进行{}方法体实现,那么这就是一个抽象方法。
抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。
抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。
2.抽象类
抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化
3.抽象类和抽象方法的使用
1.不能直接创建new抽象类对象。
2.必须用一个子类来继承抽象父类。
3.子类必须覆盖重写抽象父类当中所有的抽象方法。
覆盖重写(实现) :子类去掉抽象方法的abstract关键字,然后补上方法体大括号。
4.创建子类对象进行使用
4.抽象类的注意事项
1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
4.抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。
5.抽象类不能被实例化,抽象方法必须在子类中被实现
5.案例代码
package demopra;
//定义一个抽象类
abstract class Employees {
//定义一个变量
private String name;
//空参构造方法
public Employees() {
}
//全参构造方法
public Employees(String name) {
this.name = name;
}
//定义一个抽象方法
public abstract void work(); // @Override
// public String toString() {
// return "Employees{" +
// "name='" + name + '\'' +
// '}';
// }
//Getter和Setter
public void setName(String name) {
this.name = name;
} public String getName() {
return name;
}
}
package demopra;
//定义一个抽象类的子类
public class Teacher extends Employees{
//必须实现的方法,重写父类中的方法
@Override
public void work() {
System.out.println("我叫"+this.getName()+",是你们这学期的班主任");
}
}
package demopra;
//定义一个抽象类的子类
public class Driver extends Employees{
//必须实现的方法,重写父类中的方法
@Override
public void work() {
System.out.println("我叫"+this.getName()+",是一名出租车司机");
}
}
package demopra; public class AbstractTest {
public static void main(String[] args) {
//创建一个Teacher对象
Teacher teacher = new Teacher();
//为Teacher对象添加一个名字
teacher.setName("张三");
//执行重写的方法
teacher.work(); //创建一个Driver对象
Driver driver = new Driver();
//为Driver对象添加一个名字
driver.setName("李四");
//执行重写的方法
driver.work();
}
}
运行结果
我叫张三,是你们这学期的班主任
我叫李四,是一名出租车司机
Java之路---Day10(抽象)的更多相关文章
- Java之路——敬JAVA初学者(作者:MoMo)
作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊! 要离开学校了,还是想留 ...
- Java之路——名词解释(一)
一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...
- Java之路——环境配置与编译运行
本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...
- Java之路 ——初识Eclipse
零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...
- 转行自学 Java 之路的纪念册
前言: 最近在重读<小狗钱钱>,我对其中的"成功日记"概念特别深刻,偶尔也会记一记“成功日记”. 想了想人生走找到今天,阶段性“成功日记”有没有呢? 有的!几年前的一篇 ...
- 当Java代码遇上抽象、重载加重写,一切都不美好了
当Java代码遇上抽象.重载加重写.一切都不美好了 前几天调程序遇上个奇怪的bug.一直没找到问题,今天最终发现问题所在了,不说了先上代码(下面代码是演示样例代码,经測试,Java不存在这问题,安卓存 ...
- 是什么让我走上Java之路?
选择方向,很多人都为根据自己的兴趣爱好和自己的能力所长而作出选择.那么是什么让我走上Java之路? 整个高三我有两门课程没有听过课,一门是数学,一门是物理.当时候物理没有听课的原因很简单,我有一本&l ...
- 我的Java之路
前言: 之前在学习python,刚开始的时候跟多数小白一样学习一些基础的知识,比如数据类型,用法,基本的语言结构,学了一段时间实在是学习不下去了,真是太TMD的无聊了,很多方法都记不住,也不知道学了这 ...
- Java之路——初识Eclipse
零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...
随机推荐
- Java finally未被执行的情况
一种是先执行了用于终止程序的System.exit()方法,或进程被关闭 还有一种情况是,当前线程一直在执行,在一些业务逻辑里面跳不出来,看上去就像finally一直未被执行 线程被终止的时候也会执行 ...
- UE运行sas配置-WIN10
1.在UE中配置SAS运行的工具: UE--高级---用户工具--工具配置 在命令行输入"D:\soft\SASHome\SASFoundation\9.4\sas.exe" -c ...
- dubbo源码分析之过滤器Filter-12
https://blog.csdn.net/luoyang_java/article/details/86682668 Dubbo 是阿里巴巴开源的一个高性能优秀的服务框架,使得应用可通过高性能的 R ...
- C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案
C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案 新建Console控制台项目项目,然后添加Team和Person 这2个类,如下: Team和P ...
- Mysql模糊查询like提速优化
LOCATE('substr',str,pos)方法 SELECT LOCATE('xbar',`foobar`); ###返回0 SELECT LOCATE('bar',`foobarbar`); ...
- Visual-Based Autonomous Driving Deployment from a Stochastic and Uncertainty-Aware Perspective
张宁 Visual-Based Autonomous Driving Deployment from a Stochastic and Uncertainty-Aware Perspective Le ...
- SpringMVC基本
SpringMVC和Struts2的区别 SpringMVC与Struts2区别 对比项目 SrpingMVC Struts2 优势 国内市场情况 有大量用户,一般新项目启动都会选用springmvc ...
- 【漫谈数据仓库】 如何优雅地设计数据分层 ODS DW DM层级
转载http://bigdata.51cto.com/art/201710/554810.htm 一.文章主题 本文主要讲解数据仓库的一个重要环节:如何设计数据分层!其它关于数据仓库的内容可参考之前的 ...
- linux下 tab键失效 -bash: !ref: 为绑定变量
报错现象: Linux环境下,按Tab键进行补全时出现上图情况. [root@worker2 cjj]# vim /et-bash: !ref: 为绑定变量 -bash: !ref: 为绑定变量 -b ...
- swoole实验版聊天室
“swoole实验版聊天室”是依据一堂swoole培训课内容改编的,结合了bootstrap前端框架.redis数据库.jquery框架等实现基本功能,只是体现了swoole的应用,并不是为了专门写个 ...