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(抽象)的更多相关文章

  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. Leetcode:2. 两数相加

    题目描述: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来 ...

  2. C++内联函数(C++ inline)详解

    使用函数能够避免将相同代码重写多次的麻烦,还能减少可执行程序的体积,但也会带来程序运行时间上的开销. 函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下来还 ...

  3. php 对接微信接口 {"errcode":41001,"errmsg":"access_token missing hint

    这里是针对所有token微信都有这种机制 1.token被多次访问无效 访问微信接口->得到token,缓存起来2小时内有效,期间2小时内每次都取缓存即可,不必每次都去微信那边兑换 问题:缓存期 ...

  4. Windows通过URL启动本机App

    Windows通过URL启动本机App http://xxx.itdhz.com/?file=001-Windows/100-Windows通过URL启动本机App

  5. 在 Alpine Linux 中安装 bash shell

    如何在我的 Alpine Linux LXD(Linux容器)虚拟机(VM)中安装 bash shell? Alpine Linux 自带 BusyBox 工具.它被评为“嵌入式 Linux 的瑞士军 ...

  6. 【Node.js】Node.js的调试

    目录结构: contents structure [-] 使用console.log() 使用Chrome DevTools 使用Visual Studio Code 与JavaScript运行在浏览 ...

  7. mysql group by 查询非聚集列

    本文为博主原创,转载请注明出处: mysql使用group by可以使用一些聚合函数,可以计算最大值(max(column)),最小值(min(column)),总和(sum(column)),平均数 ...

  8. CMake版本低,需要更高版本.

    https://blog.csdn.net/qq_34935373/article/details/90266958 使用cmake命令安装Opencv软件时,报如下错误: CMake Error a ...

  9. Java基础 awt Button 点击按钮后在控制台输出文字

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  10. error Microsoft Visual C++ 14.0 is required 解决方案

    Windows平台上,pip install fastFM  scrapy等工具的时候,经常出现 error Microsoft Visual C++ 14.0 is required 的错误,   ...