抽象函数的作用有很多,我就举一个例子,(mars老师的例子):

打印机:

父类---Printer

子类---HBPrinter

子类----CanonPrinter

测试类----Test

//定义一个打印机类
abstract class Printer{
//定义三个成员函数
void open(){
System.out.println("open");
}

void close(){
System.out.println("close");
}
abstract void print();

}

//定义一个HB(惠普)打印机
class HBPrinter extends Printer{
//复写Printer的print
void print(){
System.out.println("我是惠普打印机");
}
}

//定义一个佳能打印机
class CanonPrinter extends Printer{
//复写Printer的print方法
void print(){
System.out.println("我是佳能打印机");
}
}

//测试函数
class Test{
public static void main(String args [] ){
//向上转型
Printer p1 = new HBPrinter();
p1.open();
p1.print();
p1.close();

Printer p2 = new CanonPrinter();
p2.open();
p2.print();
p2.close();
}
}

结果

F:\work\src>javac *.java

F:\work\src>java Test
open
我是惠普打印机
close
open
我是佳能打印机
close

F:\work\src>

如果父类Printer没有用abstract其方法print也没用abstract,那么当其子类有很多时,突然某一个子类忘记复写print()方法,

那么问题就出现了:可以正常运行,但是打印有问题,不知道哪里出错了,

 而当有用抽象,那么其子类忘记复写时,就会出错,提示哪一个有问题,就可以bug

java中的抽象类的作用的更多相关文章

  1. java中的抽象类和抽象方法

    知识点:java中的抽象类和抽象方法 关键字abstract意为抽象的,可以用来修饰类和方法,分别称作抽象类和抽象方法 抽象类一般在多态的场景中使用 一:抽象类(abstract class) 在类的 ...

  2. 自己(转)JAVA中toString方法的作用

    JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...

  3. Java学习笔记二十七:Java中的抽象类

    Java中的抽象类 一:Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...

  4. 【Java_基础】Java中Native关键字的作用

    本篇博文转载与:Java中Native关键字的作用

  5. Java 中,抽象类与接口之间有什么不同?

    Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个 类只能继承一个类,但是可以实现多个接口.抽象类可以很好的定义一个家族类 的默认行为,而接口能更好的定义类型,有助于后 ...

  6. 《Java中的抽象类及抽象类的作用》

    //抽象类示例: abstract class Shape1 { { System.out.println("执行Shape的初始化块..."); } private String ...

  7. Java 中的抽象类及接口

    抽象类使用 abstract 关键字修饰,该类即为抽象类. 抽象类的作用: 1.某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法. 2.可以从多个具有相同特征的类中抽象出一个抽 ...

  8. Java中的抽象类详解,它存在的意义在哪里?

    学习抽象类前先理解下面这段话: 问你个问题,你知道什么是"东西"吗?什么是"物体"吗? "麻烦你,小王.帮我把那个东西拿过来好吗" 在生活中 ...

  9. 论Java中的抽象类与接口

    目录 抽象类和抽象方法 定义 与普通类的区别以及注意点: 抽象类的作用 接口 定义 示例 注意 作用 最后:接口与抽象类的异同 使用场景 借鉴 抽象类和抽象方法 定义 抽象方法和抽象类都必须被abst ...

随机推荐

  1. npm 命令

    npm instal moduleName [-g]  :安装模块,有 -g 或 --global 是全局安装 npm install -g cnpm --registry=https://regis ...

  2. webpack打包优化

    https://www.cnblogs.com/vvjiang/p/9327903.html

  3. 对于在git上面拉代码报"error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054"解决方法

    主要原因是安全设置的问题: 首先执行git config http.sslVerify "false"   若出现下列错误 git config http.sslVerify &q ...

  4. ucos中的中断管理

    一.中断的概念 中断是一种硬件机制,用于处理异步事件.中断的实时性比轮询要好,通过中断,微控制器可以在异常发生的时候立刻进行处理,而不需要不断轮询事件是否发生. CM3支持中断嵌套,使得高优先级异常可 ...

  5. redis缓存与数据库一致性问题

    一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去. ...

  6. Qt5.12.2开发Android环境搭建

    Qt-Android开发环境概要qt-opensource-windows-x86-5.12.2----armv7jdk-8u201-windows-x64android-ndk-r18b-windo ...

  7. python基础 (函数名,闭包,和迭代器)

    1.函数名作用 函数名本质上就是函数的内存地址或对象. 1.可以被引用 2.可以被当作容器类型的元素 3.可以当作函数的参数和返回值 4.如果记不住的话,那就记住一句话,就当普通变量用 2.闭包 什么 ...

  8. 内核中hash表(以net_device为例)

    下边函数实现将新的 net_device 设备插入到内核链表中 /* * Device list insertion */ static void list_netdevice(struct net_ ...

  9. pip更换源

    #mkdir ~/.pipcd .pipvi pip.conf [global]trusted-host =  pypi.tuna.tsinghua.edu.cnindex-url = https:/ ...

  10. GUI学习之八——QToolButton的学习总结

    QToolButton提供一个快速的访问按钮,通常在工具栏内使用,一般不显示文本标签而显示图标. 一.按钮的样式风格设置 可以按照下面的风格对按钮进行样式设置 从左到右依次是仅显示图标.仅显示文字.图 ...