抽象类和接口的区别

抽象类和接口的区别

大家好,又见面了,我是全栈君。

抽象类:
1)由abstract关键字修饰
2)包含抽象方法的类必须是抽象类不包含抽象方法的类也可以声明为抽象类
3)抽象类不能被实例化
4)抽象类是需要被继承的,需要重写或者声明为抽象类:
4.1)重写所有抽象方法
4.2)也声明为抽象类
5)抽象类的意义:
5.1)封装子类共有的属性和行为
5.2)为所有子类提供一种统一的类型
5.3)可以包含抽象方法,为所有子类提供统一的入口每个子类的实现不同,但入口是一致的
接口:
1)是一个标准、规范遵守了这个标准,就能干某件事
2)接口是一种数据类型(引用类型)
3)由interface定义
4)只能包含常量和抽象方法
5)接口不能被实例化
6)接口是需要被实现的,实现类:必须重写接口中的所有抽象方法
7)一个类可以实现多个接口,用逗号隔开若又继承又实现时,应先继承后实现
8)接口可以继承接口

抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,
那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

 

区别
1.语法层面上的区别
  1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2.设计层面上的区别
  1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为
,但是接口却是对类局部(行为)进行抽象。

  2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。

转载于:https://www.cnblogs.com/CaiNiao-TuFei/p/7470855.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108190.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国内 Go 代理汇总

    国内 Go 代理汇总golang国内的代理总是一个很头疼的问题,这里汇总一下国内几个可用的代理,到时候有些包下不下来就换几个代理多试试代理1:阿里云GoModule代理传送门:https://mirrors.aliyun.com/goproxy/简介gomodule公共代理仓库,代理并缓存go模块。你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建使用帮助使用go1…

    2022年7月26日
    10
  • 从#65279字符看dede模板页面编码问题

    从#65279字符看dede模板页面编码问题

    2021年9月25日
    74
  • Apache的URL地址重写(RewriteCond与RewriteRule)

    Apache的URL地址重写(RewriteCond与RewriteRule)Apache的URL地址重写http://hi.baidu.com/sonan/blog/item/c408963d89468208bba16716.html第一种方法:Apache环境中如果要将URL地址重写,正则表达式是最基本的要求,但对于一般的URL地址来说,基本的匹配就能实现我们大部分要求,因此除非是非常特殊的URL地址,但这不是我要讨论的范围,简单几招学会Apache中URL地

    2022年6月11日
    25
  • 配置Trunk接口

    配置Trunk接口1、Trunk接口1.1什么是TrunkTrunk接口属于干道,主干链路,通常用于交换机和交换机之间,通过一个接口传输多个vlan的数据包。当Trunk端口收到数据帧时,如果该帧不包含802.1

    2022年7月1日
    23
  • WPF Visifire 图表控件「建议收藏」

    WPF Visifire 图表控件「建议收藏」VisifireWPF图表控件激活成功教程可能用WPF生成过图表的开发人员都知道,WPF虽然本身的绘图能力强大,但如果每种图表都自己去实现一次的话可能工作量就大了,尤其是在开发时间比较紧的情况下。这时候有必要借助一种专业的图表工具。Visifire是专为WPF、SliverLight、WP开发人员制定的一套图表控件,实现了一系列的专业图表(如:柱图、…

    2022年7月21日
    17
  • 【读书笔记】——奇点临近「建议收藏」

    做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!文章目录第一章 六大纪元第二章 技术进化理论:加速回归定律第三章 达到人脑的计算能力=================================================对人工智能感兴趣的伙伴,分享一个我朋友的人工智能教程。零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助,点击这里查看教程。…

    2022年2月28日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号