博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中接口与抽象类的区别
阅读量:6240 次
发布时间:2019-06-22

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

接口和抽象类的共同特征如下:

  接口和抽象类都不能被实例化,位于继承树的顶端,用于被其他类实现和继承。

  接口和抽象类都可以包含抽象的方法,实现接口的类或者继承抽象类的类都必须实现这些抽象的方法。

 

区别:二者的主要区别在于他们存在的目的不同,即设计的目的不同。

  接口作为系统与外界交互的窗口,接口体现的是一种规范。

  抽象类作为系统中多个子类的共同父类,抽象类体现的是一种模板式设计。

我们最关注的还是二者用法的区别:

(1)接口里只能包含抽象方法和默认方法,不能实现普通方法。抽象类完全可以包含普通方法。

  默认方法如下所示:

public interface A {    default   void foo(){       System.out.println("Calling A.foo()");    }}  public class Clazz implements A {}即使Clazz类并没有实现foo()方法。在接口A中提供了foo()方法的默认实现。这就是默认方法。

(2)接口里不能定义静态方法;抽象类中可以。

(3)接口里只能定义静态变量,不能定义普通变量;抽象类即能定义静态变量又能定义普通变量。

(4)接口里不含构造器;抽象类中可以含有构造器。但不是用来创建对象的,而是让子类调用该构造器来完成抽象类的初始化的。

(5)接口里不能含有初始化块;但是抽象类中可以有初始化块。

(6)类是单继承,包括抽象类;但是接口的实现可以是多个,补充了java单继承的不足!

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

你可能感兴趣的文章
组合游戏-博弈论中经典模型题目
查看>>
浅谈HTTP的GET和POST
查看>>
点灯笼
查看>>
try{}catch{}
查看>>
[Aaronyang] 写给自己的WPF4.5 笔记11[自定义控件-AyImageButton的过程 1/4]
查看>>
Linux VMware新添加网络适配器找不到配置文件问题
查看>>
Javascript百学不厌 - this
查看>>
机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
查看>>
实用算法实现-第 14 篇 启发式搜索
查看>>
c#常用的排序算法
查看>>
论文阅读——Visual inertial odometry using coupled nonlinear optimization
查看>>
Office插件编程[转]
查看>>
读代码还是读文档,来自知乎
查看>>
Linux 常见编译错误
查看>>
ASP.NET MVC 3 Controller
查看>>
Vs中调试MVC源代码步骤
查看>>
JavaScript项目重构到底有多少坑要填要踩
查看>>
footer绝对定位但是不在页面最下边解决方案
查看>>
Oil Deposits(油田)(DFS)
查看>>
Android 画图(自定义坐标轴控件的拖动实现)
查看>>