博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽象类和接口区别
阅读量:4256 次
发布时间:2019-05-26

本文共 982 字,大约阅读时间需要 3 分钟。

抽象类:

一个类被abstract关键字修饰就是抽象类。

定义很简短,可能会有很多朋友质疑,《java编程思想》中说含有抽象方法的类就是抽象类,我试了下只要用abstract修饰的都是抽象类,就算里面不含有抽象方法,语法层面也是正确的。下面所有关于抽象类的总结都是基于抽象类含有抽象方法。

下面说一下抽象类的特点:

(1)抽象类由于含有抽象方法(未实现)所以无法实例化,需要被继承

(2)继承抽象类必须实现抽象类的抽象方法,除非继承了抽象类的类还是一个抽象类,

(3)抽象类的抽象方法访问修饰符必须为public或者protected,缺省情况下和类不同默认为public  

(4)抽象类中的其他方法,变量和正常类没有区别

接口:

被interface修饰(和android aidl区分)

 接口中可以含有变量和方法,变量会被隐式地指定为public static final,但一般情况不要在接口中定义变量,方法都是抽象的(jdk8函数式接口可以有实现方法),用private、protected、static、 final等修饰会报编译错误。

接口特点:

(1)如果有变量都是public static final的

(2)方法都是抽象的,方法的默认访问修饰符为public

(3)不能直接实例化使用,需要实现

(4)接口之间可以相互继承

抽象类和接口的区别:

(1)抽象类中变量可以是正常类型的变量,接口中的变量只能是public static final

(2)接口中的方法都是抽象的,抽象类可以提供已经实现的

(3)一个类可以实现多个接口,只能实现一个抽象类

(4)接口中的方法只能是public,不能是static final等无法继承实现,抽象类中的方法则没有那么多限制。

抽象类本质还是类,抽象类有点类似我们平时抽取的基类对共性进行抽取,可以作为经常使用的类的父类。

接口是更抽象的类(感觉轻量级),接口中的变量都是常量没有讨论价值,方法都是抽象的,更像是对行为的规范,要做什么事都已经规定好,至于具体怎么做每个人都不同。

总结:抽象类侧重抽象,主要作为基类,写好共性的功能属性,留出抽象方法供实现;

接口侧重行为,规定了要实现的所有方法,但所有的方法都是抽象的,是对行为的规范。

接口新特性

jdk8接口可以定义static和default方法。

转载地址:http://yspei.baihongyu.com/

你可能感兴趣的文章
Paxos协议学习---2.由3大条件证明一致性
查看>>
Paxos协议学习---3.Paxos Made Simple
查看>>
C/C++输入输出
查看>>
泸州NGN属南气矿工程----华为s2600磁盘阵列问题解决
查看>>
泸州属南气矿----配置S2600磁盘阵列报错:There is no master controller.
查看>>
SQL 调优1
查看>>
OA报账规范(出差专用)
查看>>
生产库快速关闭数据库
查看>>
差异增量备份和累积增量备份的差别
查看>>
ASM 无法发现候选磁盘组----grid 11.2.0.3 asm 自检通不过 prvf-5184
查看>>
ASM 无法发现候选磁盘组----丢失的ASM磁盘组 ASM的磁盘组无法挂载
查看>>
Oracle 10g配置单向stream流复制,完整记录
查看>>
ORA-00845 MEMORY_TARGET not supported on this system
查看>>
ORA-00257: archiver error --11GR2 RAC 设置归档路径和开启flashback
查看>>
奕新集团项目--Oracle 源RAC ---目标 RAC GG 搭建 11.2.3 版本 双向同步
查看>>
What is SCAN in Oracle 11g R2 RAC
查看>>
关于Recycle Bin是什么以及实验
查看>>
Linux搭建时间同步服务器
查看>>
ORA-12541: TNS:no listener
查看>>
mysql数据库存储路径更改 数据文件位置
查看>>