【Java】抽象类和接口的区别
一、抽象类&抽象方法
a)概念
1、Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
2、抽象方法即只有功能声明,没有功能主体实现的方法。
3、抽象类用来描述一种类型应该具备的基本特征与功能,例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。而犬科描述了所有的犬科子类应具备的属性和行为。
4、具体如何去完成这些行为由子类通过方法重写来完成,如:狼和狗都有吼叫的方法,可是吼叫内容方式不同。所以抽象出来的犬科虽然有吼叫功能,但是并不明确吼叫的细节。
b)抽象定义格式
使用abstract修饰抽象类与抽象方法//abstract在class前修饰类 //abstract在访问权限后,返回值类型前修饰方法,方法没有方法体。abstract class Person {public abstract void eat(); }
c)抽象类&抽象方法的使用
抽象类无法直接创建对象,只能被子类继承后,创建子类对象。
1、子类定义时继承抽象类
抽象类是事物的描述,子类需要继承父类完成最终的功能实现细节(即重写方法,完成方法体)。
将一个抽象方法重写的过程也叫实现方法的过程。
2、子类定义后创建实例对象
在定义好子类后,可以直接创建对象。在所有使用子类的地方可以传入子类对象,在所有使用父类的地方也可以传入子类对象,因为属性与方法在子父类中都是相同的。
二、接口
a)概念
1、接口是功能的集合,是比抽象类更为抽象的类,同样是一种数据类型。
2、接口的更为抽象表现为其内的所有方法均为抽象方法。同时不定义普通的成员变量。
3、使用时,接口同样不能创建对象,只能在定义时实现接口。接口只能实现,不能继承。实现的动作类似继承,只是关键字不同,实现使用implements。
4、Java支持继承一个类的同时实现多个接口。
5、像父类一样,所有定义接口的地方,也可以传入其实现类对象(子类对象)。
b)定义格式
使用interface代替了原来的class,其他步骤与定义类相同。
<strong><span style="font-size:18px;">public interface 接口名 {//抽象方法1;//抽象方法2;//抽象方法3; }public interface Careable { public abstract void carCare(); }</span></strong>
c)使用格式
在具体定义类时实现接口,必须重写(实现)所有抽象方法
或者定义抽象类,可以留下若干抽象方法不实现。
class 类 implements 接口1,接口2{}
如:
class Tesla implements Careable { public void carCare() {System.out.println(“不去汽车保养店,去专业Tesla保养店!”); } }
三、区别
1、Java支持一个类同时实现多个接口(接口是干爹,抽象类是亲爹,亲爹只能有一个,而干爹可以有很多),类可以在继承一个类的同时,实现多个接口。
2、接口中的成员是固定的:
变量修饰符为:public static final
方法修饰符为:public abstract(所以重写接口方法时,必须使用public)
即接口是更加抽象的抽象类,她的成员方法必须全部为抽象方法。
3、在意义上说,抽象类的方法是指一类相似的对象共有的一些功能,而接口是指额外的一些功能。
【Java】抽象类和接口的区别相关推荐
- java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- jdk1.8中,java 抽象类和接口的区别
抽象类 特点: 1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法. 3.抽象类中可以存在抽象方法. 4.如果一个类中有一个抽象方法,那么当前类一定是抽象类:抽象类中不一定有 ...
- java 抽象类与接口的区别及其在jdk中的应用
什么是抽象类 一般而言含有抽象方法的类是抽象类,那什么是抽象方法? 就是只有方法名,没有方法体. 但是,要是没有抽象方法,你写个abstract class xx{} 这个也是抽象类~ 那么没有抽象方 ...
- Java 抽象类和接口的区别
抽象类和接口的区别 1.抽象类是半抽象的,接口是完全抽象的 2.抽象类中没有构造方法,接口有构造方法 3. 类和类之间只能单继承,接口和接口之间可以多继承 4. 一个类可以同时实现多个接口,一个抽象类 ...
- java—抽象类与接口的区别
抽象类与接口的区别 | 抽象类 接口 结构组成 普通类+抽象方法 全局常量+抽象方法 权限 任何权限 只能使用public 子类使用 使用extends关键字继承抽象类 使用implements关键字 ...
- JAVA抽象类和接口的区别【附经典分析用例Door】
这篇文章对抽象类和接口说的很详细,希望对大家有所帮助. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大 ...
- Java抽象类与接口的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...
- 【转】Java抽象类与接口的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...
- 转载 java抽象类与接口的区别
Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和inte ...
- Java抽象类和接口的区别和联系
抽象类 注:先将抽象类中的两种方法解释完,再综合解释抽象类 抽象方法 应用场景:其下所有子类都应该有该方法但是大部分子类具体的执行步骤是有所不同的. 必须重写:也可以说"必须实现" ...
最新文章
- 伍六七带你学算法 入门篇-卡牌分组
- Windows 7时代即将终结!
- bingmaps rest 中文化服务
- python 中 feedparser的简单用法
- C语言:L1-035 情人节 (15分)(解题报告)
- SparkContext转化为JavaSparkContext
- SAP UI5 Repository and MongoDB Repository
- ddr4服务器内存和普通内存_服务器内存介绍及其供电规范
- python分数序列求和_Python练习题 019:求分数序列之和
- 【Oracle】Oracle GoldenGate简介及搭建过程
- 解决办法:fatal error: SDL.h: 没有那个文件或目录
- Android开发系列之常用正则语法
- 51单片机学习历程(二)快速入门51单片机
- 8月书讯(上)| 这些新书不可错过
- 聚类尝试-kmeans-step1数据预处理
- Simulink Resolver 旋转变压器解码仿真
- 心有猛虎,细嗅蔷薇。—第二十六天
- 三国史诗——三国官制(二)
- 快速批量去除图片水印方法大全~~
- linux一些简单的操作命令
热门文章
- 高数 07.04 多元复合函数的求导法则
- Windows10使用命令行打开3389_内网渗透(实验)之域渗透深入弹shell开3389拿域控
- Linux查看CPU使用率的一些命令
- 正规的IT外包公司的报价组成
- CF1293A. ConneR and the A.R.C. Markland-N
- 面试必须学会的八大技巧——让你在面试官面前游刃有余(面试注意事项等)
- TCP的MTU探测功能
- 华农计算机软件就业,华农17届就业报告出炉!毕业生月薪集中在4-6k!
- 教你微信怎么投票快之微信投票快速投票方法
- 阿姆斯特朗数——————还记得大明湖畔的水仙花么(笑)