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.案例代码

  1. package demopra;
  2. //定义一个抽象类
  3. abstract class Employees {
  4. //定义一个变量
  5. private String name;
  6. //空参构造方法
  7. public Employees() {
  8. }
  9. //全参构造方法
  10. public Employees(String name) {
  11. this.name = name;
  12. }
  13. //定义一个抽象方法
  14. public abstract void work();
  15.  
  16. // @Override
  17. // public String toString() {
  18. // return "Employees{" +
  19. // "name='" + name + '\'' +
  20. // '}';
  21. // }
  22. //Getter和Setter
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26.  
  27. public String getName() {
  28. return name;
  29. }
  30. }
  1. package demopra;
  2. //定义一个抽象类的子类
  3. public class Teacher extends Employees{
  4. //必须实现的方法,重写父类中的方法
  5. @Override
  6. public void work() {
  7. System.out.println("我叫"+this.getName()+",是你们这学期的班主任");
  8. }
  9. }
  1. package demopra;
  2. //定义一个抽象类的子类
  3. public class Driver extends Employees{
  4. //必须实现的方法,重写父类中的方法
  5. @Override
  6. public void work() {
  7. System.out.println("我叫"+this.getName()+",是一名出租车司机");
  8. }
  9. }
  1. package demopra;
  2.  
  3. public class AbstractTest {
  4. public static void main(String[] args) {
  5. //创建一个Teacher对象
  6. Teacher teacher = new Teacher();
  7. //为Teacher对象添加一个名字
  8. teacher.setName("张三");
  9. //执行重写的方法
  10. teacher.work();
  11.  
  12. //创建一个Driver对象
  13. Driver driver = new Driver();
  14. //为Driver对象添加一个名字
  15. driver.setName("李四");
  16. //执行重写的方法
  17. driver.work();
  18. }
  19. }

运行结果

  我叫张三,是你们这学期的班主任

  我叫李四,是一名出租车司机

Java之路---Day10(抽象)的更多相关文章

  1. Java之路——敬JAVA初学者(作者:MoMo)

    作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊!    要离开学校了,还是想留 ...

  2. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  3. Java之路——环境配置与编译运行

    本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...

  4. Java之路 ——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

  5. 转行自学 Java 之路的纪念册

    前言: 最近在重读<小狗钱钱>,我对其中的"成功日记"概念特别深刻,偶尔也会记一记“成功日记”. 想了想人生走找到今天,阶段性“成功日记”有没有呢? 有的!几年前的一篇 ...

  6. 当Java代码遇上抽象、重载加重写,一切都不美好了

    当Java代码遇上抽象.重载加重写.一切都不美好了 前几天调程序遇上个奇怪的bug.一直没找到问题,今天最终发现问题所在了,不说了先上代码(下面代码是演示样例代码,经測试,Java不存在这问题,安卓存 ...

  7. 是什么让我走上Java之路?

    选择方向,很多人都为根据自己的兴趣爱好和自己的能力所长而作出选择.那么是什么让我走上Java之路? 整个高三我有两门课程没有听过课,一门是数学,一门是物理.当时候物理没有听课的原因很简单,我有一本&l ...

  8. 我的Java之路

    前言: 之前在学习python,刚开始的时候跟多数小白一样学习一些基础的知识,比如数据类型,用法,基本的语言结构,学了一段时间实在是学习不下去了,真是太TMD的无聊了,很多方法都记不住,也不知道学了这 ...

  9. Java之路——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

随机推荐

  1. Metasploit使用内网跳板, 扫描局域网主机

    最近,拿到一台内网机器, 苦于无法使用nmap扫描改主机的内网, 所以才有此文 在跳板机子获取一定权限后,需要积极的向内网主机权限发展,获取指定的目标信息,探查系统漏洞,借助msf已经得到的meter ...

  2. Eclipse安装代码反编译插件Enhanced Class Decompiler

    在开发过程中,如果想查看引入资源的源代码,可以借助eclipse的插件Enhanced Class Decompiler轻松实现,下面我来讲解一下如何安装使用这个插件. 1.打开Eclipse菜单-& ...

  3. MQTT研究之EMQ:【EMQX使用中的一些问题记录(3)】

    EMQX功能强大,但是帮助信息或者可用资料的确有限,遇到个问题,比较难找到处理的头绪,今天,我要记录的是,使用中出现EMQX宕机,但是呢,启动也启动不了. 今天记录的内容,就以操作EMQX 3.2.3 ...

  4. Go 切片:用法和本质

    2011/01/05 引言 Go的切片类型为处理同类型数据序列提供一个方便而高效的方式. 切片有些类似于其他语言中的数组,但是有一些不同寻常的特性. 本文将深入切片的本质,并讲解它的用法. 数组 Go ...

  5. Superset配置hive数据源

    1.在uri中配置 hive://localhost:10000/default 2.查询 3.如果你的hive集群是带有kerberos认证的,hive数据源需要这样配置 hive://xxx:xx ...

  6. Transaction-Mybatis源码

    github地址:https://github.com/dchack/Mybatis-source-code-learn (欢迎star) TransactionFactory 官方文档: 在 MyB ...

  7. 图像拼接(image stitching)

    # OpenCV中stitching的使用 OpenCV提供了高级别的函数封装在Stitcher类中,使用很方便,不用考虑太多的细节. 低级别函数封装在detail命名空间中,展示了OpenCV算法实 ...

  8. java核心技术(卷一)

    一,java基本程序设计结构: 1,在网页中运行的 Java 程序称为 applet. 要使用 applet ,需要启用 Java 的 Web 浏览器执行字节码. 2,jdk安装目录下的 src.zi ...

  9. Kubernetes 使用 Weave Scope 监控集群(十七)

    目录 一.安装 二.使用 Scope 2.1.拓扑结构 2.2.在线操作 2.3.强大的搜索功能 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所 ...

  10. jdk安装配置(不适合新人,个人随笔)

    jdk下载:https://www.oracle.com/technetwork/java/javase/downloads/index.html 按个人喜好下载相应版本,一般比最新的低一个版本 下载 ...