抽象类概念和作用

1、抽象类:
Java中可以定义没有方法体的方法,该方法由子类来具体实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。

2、抽象类的特点:
(1)定义中含有抽象方法的类叫做抽象类
(2)抽象类用abstract来修饰
(3)抽象类代表一种抽象的对象类型
(4)抽象类不能实例化,抽象类中可以有具体的方法,可以没有抽象方法

3、抽象方法的特点:
(1)只有方法头没有方法体的方法称为抽象方法
(2)抽象方法用abstract来修饰
(3)抽象方法代表一种不确定的操作或行为
(4)抽象方法不能被调用

代码示例:

abstract class Demo1 //Demo1为抽象类所以class前也要加abstract
{abstract public void printinfo();
}
class Demo2 extends Demo1
{public void printinfo() {// TODO Auto-generated method stubSystem.out.println("子类继承后也需要抽象方法具体化");}}
public class Test {public static void main(String[] args) {Demo1 d1 = new Demo1() {   //这个不叫作对象实例化,而是匿名内部类public void printinfo() {// TODO Auto-generated method stubSystem.out.println("含抽象类方法对象不能被实例化");}};d1.printinfo();Demo2 d2 = new Demo2();d2.printinfo();}
}

运行结果:

含抽象类方法对象不能被实例化

子类继承后也需要抽象方法具体化

4、抽象类之模板方法模式
定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为。
意图:定义了一个操作中的一个算法框架,把一些步骤推迟到子类中去实现。模板方法模式让子类不再需要改变算法结构。

代码示例:

/*抽象类:Java中可以定义没有方法体的方法,该方法由子类来具体实现。*该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类 *//*抽象方法的特点:* 1.只有方法没有方法体的方法称之为抽象方法* 2.抽象方法用abstract来修饰* 3.抽象方法代表一种不确定的操作或行为* 4.抽象方法不能被调用*//*抽象类的特点:*1.定义中含有抽象方法的类叫做抽象类*2.抽象类用abstract来修饰*3.抽象类代表一种抽象的对象类型*4.抽象类不能实例化*5.抽象中可以有具体方法,可以没有抽象方法 *//*模板方法模式:* 定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为* 意图:定义了一个操作中的一个算法框架,把一些步骤推迟到子类中去实现。模板方法模式让子类不再需要改变算法结构*/
abstract class Control
{abstract public void initUart();abstract public void getCommand();abstract public void openLight();abstract public void openTV();public void work(){initUart();getCommand();openLight();openTV();}
}
class C51Con extends Control
{public void initUart() {// TODO Auto-generated method stubSystem.out.println("C51 initUart");}public void getCommand() {// TODO Auto-generated method stubSystem.out.println("C51 getCommand");}public void openLight() {// TODO Auto-generated method stubSystem.out.println("C51 openLight");}public void openTV() {// TODO Auto-generated method stubSystem.out.println("C51 openTV");}}class STC15wCon extends Control
{public void initUart() {// TODO Auto-generated method stubSystem.out.println("STC15w initUart");}public void getCommand() {// TODO Auto-generated method stubSystem.out.println("STC15w getCommand");}public void openLight() {// TODO Auto-generated method stubSystem.out.println("STC15w openLight");}public void openTV() {// TODO Auto-generated method stubSystem.out.println("STC15w openTV");}}
public class Test {public static void main(String[] args) {C51Con c51 = new C51Con();c51.work();STC15wCon s15 = new STC15wCon();s15.work();}
}

运行结果:

C51 initUart
C51 getCommand
C51 openLight
C51 openTV
STC15w initUart
STC15w getCommand
STC15w openLight
STC15w openTV

Java抽象类方法和抽象类相关推荐

  1. java抽象类变量_Java抽象类

    一.解释: Java的普通类是一个完善的功能类,可以直接实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容.而抽象类是指在普通类的结构里面增加抽象方法的组成部分 ...

  2. scala java抽象理解_Scala - 抽象类型和隐式参数解析

    我正在使用Scala 2.10.4 . 请详细说明一下 - 实际的代码深深地嵌入了一个复杂的程序中,所以我不会解释这个问题,而是以时间的方式抽象出问题来讨论动物;-) 在scala我有两个特征 - 例 ...

  3. day15笔记:抽象类和抽象类方法、接口、内部类

    抽象类和抽象类方法.接口.内部类 1.抽象类和抽象方法(abstract关键字) 2.接口 3.内部类 1.抽象类和抽象方法(abstract关键字) 1.abstract 抽象的 2.abstrac ...

  4. java抽象的理解_Java中抽象类的理解

    Java中抽象类的理解 创建   所有   bsp   抽象类   member   初始   dem   print ---------------------------------------- ...

  5. mockito mock void方法_Spock如何模拟抽象类方法

    我们平时写单元测试时经常会遇到调用抽象类或父类的方法,这些抽象方法可能是调用底层接口或数据库,需要mock掉,让抽象方法返回一个我们指定的值,以便测试当前代码逻辑的场景. 下面讲下Spock如何结合p ...

  6. java提高篇之抽象类与接口

    转载自 java提高篇之抽象类与接口 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的 ...

  7. Java中接口、抽象类与内部类学习

    2019独角兽企业重金招聘Python工程师标准>>> Java中接口.抽象类与内部类学习 接口与内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类和抽象方法 抽象方 ...

  8. autojs调用java识字_autojs实现抽象类的继承

    作者:  牙叔 使用情景 在java中, 抽象类必须继承才能使用, 那么在autojs中怎样实现继承抽象类呢? java中的实现 创建一个抽象类 package com.yashu;public ab ...

  9. 字节码编程,Byte-buddy篇三《使用委托实现抽象类方法并注入自定义注解信息》

    作者:小傅哥 博客:https://bugstack.cn - 汇总系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 截至到本章节关于字节码框架 Byte-buddy 的大部分常用 ...

最新文章

  1. java_native关键字
  2. [转载]ESFramework 4.0 快速上手(15) -- 客户端登录验证
  3. 分布式数据库灵活存储机制与应用实践
  4. Hadoop 2.7.3 完全分布式维护-动态增加datanode篇
  5. python中的json序列化
  6. notebook python 内嵌 数据库_python数据分析:在jupyter notebook上使用pythonSQL做数据分析...
  7. 高级精致智能快捷的Web设计原则案例
  8. 经典面试题(23):以下代码将输出的结果是什么?
  9. JQueryDOM之样式操作
  10. spring官网下载
  11. ip对应的区域查询(asp.net版)
  12. hdu 2028 Lowest Common Multiple Plus(最小公倍数)
  13. java infinity 处理_Java:如何执行向-Infinity而不是0的整数除法?
  14. vfp 生成html,[转载]vfp 做 b/s 的方法
  15. 网线制作ppt_制作网线图解ppt课件
  16. CentOS 官网下载各个版本CentOS系统
  17. UE5实现HTC Vive VR功能
  18. 机器学习入门,转载博文,转自 飞鸟各投林
  19. 祝贺!周润发获颁授荣誉博士
  20. 【DDOS 防御小建议】

热门文章

  1. CSP-S 2020
  2. 通过opencv实现将图片转换为视频
  3. three后期处理与多通道渲染
  4. 《因果学习周刊》第13期:ICLR 23因果推断高分论文
  5. Haproxy+Keepalived+MySQL高可用均衡负载部署
  6. 微信小程序之顶部导航栏(选项卡)实例 —— 微信小程序实战系列(1)
  7. JS: onfocus和onblur事件应用举例
  8. 【元宇宙系列】游戏与元宇宙(下)——拉动上游产业发展并引领传统产业数字化转型
  9. 从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
  10. MySQL 计算两个日期/时间之间相差的天数、分钟数、秒数...