抽象类概述

分析事物时, 发现了共性的内容,就出现向上抽取,但是如果父类 的方法功能与子类不同,那么这时就不抽取方法主体,这样抽取出来的方法 就是抽象方法

什么是抽象类

有抽象方法的类

抽象类和普通的父类有什么区别?

有抽象方法

抽象方法又是什么?

使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体

总结: 1. 将像的部分和相似的部分抽取到一个父类当中(共性内容向上抽取)***抽象类,就是一个特殊父类***2. 抽象类和普通父类的区别在于, 抽象类可以定义抽象方法3. 当我们将共性的行为(方法) 抽取到父类之中后, 发现该行为在父类中描述不清了,但这个行为还是子类(强制重写)必须要做的行为,就可以定义为抽象方法举例:  动物类 :eat(); //将共性的eat方法抽取到父类中后,发现该行为描述不清了猫类 :eat() { 吃<●)))><< };狗类 :eat() {吃肉};

抽象类和抽象方法如何定义?

抽象方法:
去掉方法体的大括号,然后分号结束,并在返回值类型前面加入关键字[abstract]

public abstract void eat () ;
限制:抽象方法,必须存活在抽象类或者是接口当中

抽象类如何定义: 在class 前面加入[abstract]

public abstract class Student  {}

抽象类的子类必须要重写抽象类的抽象方法(或者把自己也变成抽象类)

抽象类的特点

A . 抽象类和抽象方法必须使用abstract关键字修饰
B . 抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类或接口
C . 抽象类不能实例化 (实例 = 对象) [也就是不能创建对象],如果非要实例化,可以通过多态的形式创建,也就是 父类引用指向子类对象

实例化:
Animal a = new Dog();
//多态调用方法,编译看左边(检查父类中有没有eat方法),运行看右边(执行的是子类的eat方法)
a.eat();

D . 抽象类的子类 1.重写父类(抽象类)中所有的抽象方法[推荐方案] 2.要么将自己也变成一个抽象类

抽象类的成员特点

总结:1. 成员变量: ● 可以是一般变量● 也可以是常量2. 成员方法:● 可以是一般方法● 也可以是抽象方法3. 构造方法:有,目的是为了方便子类进行初始化的结论: 抽象类中除了可以定义抽象方法以外,其余的定义和普通的类是一样的

注意事项

关于抽象类的使用,

1. 抽象类不能创建对象,如果创建了,编译无法通过而报错,只能创建其非抽象子类的对象

2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的

3. 抽象类中.不一定包含抽象方法,但是有抽象方法一定要是抽象类

4.抽象类的子类,必须重写抽象父类中所有抽象方法,否则,编译无法通过而报错, 除非该子类也是抽象类

不允许使用抽象类类型的对象怎么办_什么是抽象类?相关推荐

  1. 不允许使用抽象类类型的对象怎么办_Java基础——面试官:你来说说抽象类和接口的区别...

    无论你是新手Java 程序员,还是老手程序员,可能在实际开发中很少自己写抽象类. 但是抽象类在某些时候的功能很强大,可以保证子类中百分百实现父类中的方法 -- 普通类的弊端,消除子类的冗余代码 -- ...

  2. c++ 不允许使用抽象类类型的对象_Java中日期API的使用总结

    日期总结 1. Date类 1.1 Date date = new Date(); 以当前的系统时间创建Date对象 (构造方法) 1.2 Date date = new Date( long mil ...

  3. 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象编程三大特征 - 多态

    Java面向对象编程三大特征 - 多态 本文关键字:Java.面向对象.三大特征.多态 多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一.在理解多态之前需要先掌握继承.重写.父类引用指向 ...

  4. .net知识和学习方法系列(十五)类型,对象,堆栈和托管堆

    1.          类型,对象,堆栈和托管堆 C#的类型和对象在应用计算机内存时,大体用到两种内存,一个叫堆栈,另一个叫托管堆,下面我们用直角长方形来代表堆栈,用圆角长方形来代表托管堆.   首先 ...

  5. Java通过泛型的模板类型实例化对象

    Java通过泛型的模板类型实例化对象 最近自己研究了下mvvm框架,使用泛型的方式可节省很多代码,并且可以合并很多冗余代码,为了最大化的精简代码想到了通过泛型的type用反射的方式实例化对象,这样对象 ...

  6. 无法将stdClass类型的对象用作数组?

    本文翻译自:Cannot use object of type stdClass as array? I get a strange error using json_decode() . 我使用js ...

  7. Object of type 'ListSerializer' is not JSON serializable “listserializer”类型的对象不可JSON序列化...

    Object of type 'ListSerializer' is not JSON serializable "listserializer"类型的对象不可JSON序列化 一般 ...

  8. 计算机二级日期格式,09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象...

    09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象 分类:计算机等级| 更新时间:2008-10-16| 来源:教育联展网 将未指定格式的日期字符串转化成java ...

  9. Winform中实现序列化指定类型的对象到指定的Xml文件和从指定的Xml文件中反序列化指定类型的对象

    场景 在Winform程序中需要将某些页面的设置存储到配置文件中,下次再次打开时通过配置文件读取,点击确定时能将将设置保存到配置文件中. 之前介绍过 Winform中自定义xml配置文件后对节点进行读 ...

最新文章

  1. 2021年大数据Flink(十八):Flink Window操作
  2. 图像也能做情感迁移?罗切斯特大学团队提出计算机视觉新任务
  3. python 报错 AttributeError: type object ‘datetime.datetime‘ has no attribute ‘datetime‘
  4. struts2 获取 session
  5. Python reload 函数 - Python零基础入门教程
  6. 二进制和八进制表示法
  7. python时间模块的使用
  8. 逻辑表达式是否合法_Linux shell 逻辑运算符、逻辑表达式详解
  9. Android - Earthquake工程(地震监测) 的 对
  10. 面向对象java试题_经典面向对象试题,用Java做,要详细点的!先谢过了
  11. .net core读取appsettings.json配置信息、自定义json文件、自定义xml文件
  12. Js字符串与十六进制的相互转换 【转】
  13. sql2008计算机环境,win2008r2下安装sql2008r2初版
  14. mysql 名次语法规则_Mysql排名问题
  15. 怎么看外文文献的影响因子_怎么看文章的影响因子?
  16. google guava Joiner 示列
  17. linux系统怎么设任务计划,在Linux系统上设置计划任务
  18. python学生成绩管理系统实验报告心得_学生成绩管理系统心得体会
  19. 【DeepSORT系列之】Cosine Metric Learning训练与demo可视化
  20. 自己封装的数据库DbUtils的万能模板

热门文章

  1. [反汇编练习] 160个CrackMe之024
  2. 电商52个专业名词解释大汇总
  3. 启动时出现 r8169 0000:02:00.0: firmware: agent loaded rtl_nic/rtl8168e-3.fw into memory
  4. xxxiNetxxxxx2
  5. 体验APP时的必答题—以扇贝单词为例
  6. Parameter specified as non-null is null method kotlin.jvm.internal.Intrinsics.checkNotNullParameter
  7. 大数据时代的回收生意经
  8. 调用系统命令,goto again
  9. 学编程遇到的数学知识
  10. Google play中下载apk