一、抽象类

  • abstract修饰符可以用来修饰方法和类,如果修饰方法,那么该方法为抽象方法;如果修饰类,则该类为抽象类
  • 抽象类中可以没有修饰方法,但抽象方法必须在抽象类中
  • 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的
  • 抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的
  • 子类继承抽象类,那么必须要实现抽象类的所有抽象方法,否则该子类也要声明为抽象类

二、实例演练

  1. 定义一个抽象类
  • 抽象方法只有方法名,没有方法体,否则报错

//抽象类
public abstract class Action {//普通方法public void run(){System.out.println("run");}//抽象方法//abstract,抽象方法,只有方法名,没有方法的实现public abstract void fly();public abstract void eat();public static void main(String[] args) {//Action action=new Action(){}  报错,必须重写所有的抽象方法Action action=new Action(){//实现抽象类中的所有抽象方法@Overridepublic void fly() {System.out.println("fly");}@Overridepublic void eat() {}};action.fly();action.run();}
}

运行结果为:

fly
run
  1. 定义一个非抽象类子类继承抽象类
  • 开始时报错,因为还为重写Action所有的抽象方法:

  • 当重写了Action所有的抽象方法后正确运行(Alt + Insert -> override 快捷方式重写):
//抽象类的所有方法,继承了它的子类都必须要实现它的所有抽象方法,除非子类也是抽象类
public class B extends Action{//必须重新所有的抽象方法,否则报错@Overridepublic void fly() {}@Overridepublic void eat() {}
}
  1. 定义一个抽象类子类
  • 开始时并未报错,因为子类C也是抽象类,所以需要在子类的子类中重写父类的所有重写方法
public abstract class C extends Action{Action action=new Action() {@Overridepublic void fly() {}@Overridepublic void eat() {}}
}
  1. 重写类存在构造器
public abstract class Action {//构造器public Action() {}
}

三、总结

抽象类的特点

  1. 不能new这个抽象类,只能靠子类去实现它:约束
  2. 抽象类中可以写普通方法
  3. 抽象方法必须在抽象类中
  4. 子类继承抽象类,那么必须要实现抽象类的所有抽象方法

abstract抽象类相关推荐

  1. 继承extends ,this super final 关键字,abstract抽象类,override方法重写

    继承extends 私有成员不能被继承  总结:子类方法中,使用变量的原则是:就近原则 1 package review06; 2 /* 3 私有成员不能被继承 4 子类和父类有同名的成员变量:在子类 ...

  2. JAVA入门级教学之(abstract抽象类)

    目录 JAVA入门级教学之(abstract抽象类) 1.如何定义抽象类? 2.抽象类无法被实例化 3.虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的 4.抽象类中可 ...

  3. 小白Java学习之路(abstract抽象类,final,接口,equals)

    常见面试题 final修饰静态常量进过方法 final 修饰的基本数据类型变量是无法进行修改的 final 修饰的引用类型的变量 只保证地址不变 对象中的内容可以发生改变 public class T ...

  4. abstract(抽象类)与interface(接口)的区别

    文章目录 前言 一.abstract(抽象类) 1.用abstract关键字修饰方法 1.用abstract关键字修饰类 二.interface(接口) 总结 前言 abstract(抽象类)与int ...

  5. java抽象类关键字_Java之关键字abstract(抽象类与抽象方法)

    /* * abstract关键字的使用 * 1.abstract:抽象的 * 2.abstract可以用来修饰的结构:类.方法 * * 3. abstract修饰类:抽象类 * > 此类不能实例 ...

  6. extends 抽象方法_关于abstract抽象类的理解

    abstract: 抽象类不能被实例化(new),包含属性.方法.构造器(此构造器不用来初始化实例,只用来被子类调用,其构造函数是提供给子类创建对象的时候初始化父类的属性的),故只能被继承.抽象中用的 ...

  7. c# abstract抽象类与继承类子类的构造函数_base

    http://blog.itpub.net/9240380/viewspace-718054/ http://blog.163.com/cloud_thegreat/blog/static/10367 ...

  8. 【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)

    啥是抽象类?抽象类是用来干嘛的? 上层简单总结 所谓抽象类,就是把一些事物的共性总结起来,封装在一个抽象类当中从而形成一个模板,供子类进行继承并实现.子类总体上会保留抽象类的行为方式,并且在父类的基础 ...

  9. 1-10 Java 继承、protected和abstract抽象类

    文章目录 1.继承 1)概念 2)代码例子 2.重写 1) 业务背景 2)代码实现 3)代码说明 3.抽象类,抽象方法 1)业务场景 2)abstract,抽象的 4.protected 修饰符 1. ...

  10. 44从零开始学Java之详解容易让初学者懵圈的abstract抽象类、抽象方法

    作者:孙玉昌,昵称[一一哥],另外[壹壹哥]也是我哦 千锋教育高级教研员.CSDN博客专家.万粉博主.阿里云专家博主.掘金优质作者 前言 经过前面几篇文章的讲解,我们现在已经对面向对象有了基本的认知, ...

最新文章

  1. camera数字降噪(DNR)
  2. Science发现了改变情绪的大脑受体
  3. Linux多线程实践(8) --Posix条件变量解决生产者消费者问题
  4. 现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)...
  5. python3与Beautiful Soup库
  6. CentOS+lighttpd+php+mysql (fastcgi)环境的搭建(转)
  7. Spark入门(十四)之分组求最大值
  8. 调试一个Ext打开的window窗口内嵌Iframe的form提交问题
  9. STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
  10. web漏洞扫描器-awvs
  11. 网页数据实时更新的三种简单方法
  12. 2022-2028年中国飞机电子飞行包(EFB)行业市场竞争状况及发展趋向分析报告
  13. 【区块链基础】2——BTC区块结构
  14. 苹果计算机如何显示错误,科普电脑打开苹果手机视频教程及Apple ID验证失败发生未知错误怎么解决...
  15. 分享嵌入式开发使用过程中遇到的几个问题(MQX4.2,IAR,Kinetis K66)
  16. 华为Vo5G技术GC方式下引入G
  17. 【论文】【ACL2018】Neural Document Summarization by Jointly Learning to Score and Select Sentences
  18. Web渗透 不断更新
  19. 时间序列预测:指数平滑法及python实现
  20. PHP的学习笔记 (php的基础语法)

热门文章

  1. CISCO路由器配置基础(2)
  2. 【grokking·Deep Learning】读书笔记一
  3. 都2022年了,还不用Jenkins自动化部署?
  4. Android 12应用适配指南
  5. VS中验证控件的使用
  6. 《谁欠谁的幸福》 2012北京高考满分作文,很不错
  7. 易课寄在线购课系统开发笔记(十六)--完成内容服务系统的工程搭建
  8. 2023CCF CAT- 全国算法精英大赛
  9. OpenWrt与嵌入式Linux
  10. 串口硬件设备与WINx64下不同环境的程序控制