抽象类定义?为什么要使用抽象类?
为什么要使用抽象类? 有什么好处?
答案:1 现实中一些父类中的方法没必要写 各个子类中的方法会有所不同 所以没必要在父类中写
2 看被人代码时候会注意这是抽象方法 会有个提示作用
3 当看到一个类是抽象的,要关心他的抽象方法, 因为他的子类一定会重写他,然后去找抽象类的引用,,会有多态性的体现
4 面向对象复杂但是是为了方便解决问题
5 含有抽象方法的类必须定义为抽象类
6 不能使用 abstract修饰属相或者局部变量
7 抽象类中可以同时含有抽象方法和非抽象方法
8 在抽象类里定义的抽象方法只有方法头没有方法体,但这个抽象方法如果被多个子类所调用的时候,各子类可以根据各自需要实例化出不同的对象 并且重新定义不同的方法体上去,从而通过它来实现多态
9 抽象类可以有方法体 就是抽象工厂
10 抽象类中定义抽象方法不能有方法体(未实现)
11 demo
抽象类是在接口和实体类之间的一个桥梁
例如
做一个接口叫做飞行FlyAnimalAction,里面定义一个方法叫做flying,再定义一个方法叫做eat
做一个类叫做蚊子实现接口,蚊子要实现flying方法,实现自己的eat方法
做一个类叫做苍蝇实现接口,苍蝇也要实现flying方法,实现自己的eat方法
你发现所有会飞的动物都要实现这个接口,很麻烦,不如
做一个抽象类FlyAnimal,然后实现上面的接口
在里面实现flying这个方法,因为大部分的飞行动作是一样的,而eat方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的
下面你再写蚊子类就简单了,可以直接继承这个抽象类,然后实现自己的吃方法就行了
而且苍蝇类的制作也是一样,这个时候抽象类的功能就显示出来了,当然抽象类的功能远远不是这些,只是初期理解到这里就够了。
抽象类定义?为什么要使用抽象类?相关推荐
- java定义两个动物抽象类 程序_java抽象类和接口详解
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...
- java 定义抽象变量_Java抽象类和抽象方法定义与用法实例详解
本文实例讲述了Java抽象类和抽象方法定义与用法.分享给大家供大家参考,具体如下: 一.Java抽象类 1.抽象类的说明 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都 ...
- java中抽象类 接口_java中的抽象类与接口
1.抽象类的定义 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 2.简单实例 ...
- java 抽象类 final_Java8 final关键字与抽象类
final关键字 最终无法改变的 final修饰的变量如果是成员变量没有默认初始值,如果修饰局部变量可以只声明不初始化 final 修饰类 方法 变量 final 修饰类:不能被继承 不能有子类 fi ...
- java画板抽象类_java 中的 抽象方法 抽象类 和 接口有啥瓜葛
文章目录 什么是java中的抽象方法 抽象方法是一种特殊的方法: 它只有声明,而没有具体的实现 例如: abstract void eat(); 上面定义了一个方法 eat() ,有修饰关键词 abs ...
- Java抽象类和接口使用_Java 抽象类和接口
一.抽象类 1.定义 抽象类指提供方法,但是未提供方法体(实现方法)的类,抽象类用来被子类继承,子类通过方法的重写实现抽象方法. 注:1)抽象类中不一定包含抽象类,它可能只是abstract修饰的类: ...
- 什么是抽象类,为什么要写抽象类
抽象类与接口紧密相关,它们不能实例化,并且常常部分实现或根本不实现.抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承.从抽象类派生的类仍可实现接口.可以 ...
- php interface 抽象类,解析PHP中的抽象类(abstract class)和 接口(interface)
有关PHP中抽象类与接口问题,有些人或许明白,有些人或许模糊,在此,小编给大家详细介绍一下有关两者的概念及功能,请大家一定要珍藏噢! 一.抽象类abstract class 1.抽象类是指在 clas ...
- 继承了抽象类的子类需要把抽象类中的方法重写一遍吗?
继承了抽象类的子类需要把抽象类中的方法重写一遍吗? 抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写: 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补 ...
最新文章
- html form提交前验证,form表单提交前验证实现方法
- ios学习笔记-数据持久化
- 2007年教育学专业基础综合考试大纲
- jQuery Sizzle选择器(一)
- JUC原子类-基本类型(二)
- 一个简单的C#获取Session、设置Session类文件
- scratch 素材_scratch书籍免费领
- c语言队列作用,队列(C语言)
- caffe linux下面的调试mnist遇到的问题
- Shiro面试题答案
- 电子管功放制作指南_电子管功率放大器的简易设计
- esxi安装报错解决方案
- 在线DES加密/解密工具
- 彻底清除Zencart的cache文件夹myDEBUG.log文件
- MATLAB伽罗域是什么,利用伽罗华域的运算来计算生成矩阵
- outlook 签名_快速提示:轻松在Outlook 2007中的签名之间切换
- 【Cheatsheet】Java的常用代码(以及eclipse技巧)
- Drop Shipment PO以及Replenishment PO有何异同?
- Oracle exp导出
- linux端防火墙指定端口的开和关