普通类,抽象类和接口之间的区别
一、普通类、抽象类和接口区别:
1. 普通类可以实例化,接口都不能被实例化(它没有构造方法),抽象类如果要实例化,抽象类必须指向实现所有抽象方法的子类对象(抽象类可以直接实例化,直接重写自己的抽象方法),接口必须指向实现所有所有接口方法的类对象。
2. 抽象类要被子类继承,接口要被子类实现。
3. 接口只能做方法的声明,抽象类可以做方法的声明,也可以做方法的实现。
4. 接口里定义的变量只能是公共的静态常量,抽象类中定义的变量是普通变量。
5. 抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如果不能全部实现接口方法,那么该类只能是抽象类。
6. 抽象方法只能声明,不能实现。接口是设计的结果,抽象类是重构的结果。
7. 抽象类里可以没有抽象方法。
8. 如果一个类里有抽象方法,那么该类只能是抽象类。
9. 抽象方法要被实现,所以不能是静态的,也不能是私有的。
10. 接口可以继承接口,并可多继承接口,但类只能单继承。(重要啊)
11. 接口中的常量:有固定的修饰符-public static final(不能用private和protected修饰/本质上都是static的而且是final类型的,不管加不加static修饰)。
12. 接口中的抽象方法:有固定的修饰符-public abstract 。
13、接口细节:
若接口中方法或变量没有写public,static,final / public,abstract ,会自动补齐 。
接口中的成员都是共有的。
接口与接口之间是继承关系,而且可以多继承。
接口不能被实例化
一个类可以实现多个接口
在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用,访问形式:接口名.变量名。
一个接口不能继承其它的类,但是可以继承别的接口
一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现
注意:
① 抽象类和接口都是用来抽象具体的对象的,但是接口的抽象级别更高。
② 抽象类可以有具体的方法和属性,接口只能有抽象方法和静态常量。
③ 抽象类主要用来抽象级别,接口主要用来抽象功能。
④ 抽象类中,且不包含任何的实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。
⑤ 接口方法,访问权限必须是公共的 public。
⑥ 接口内只能有公共方法,不能存在成员变量。
⑦ 接口内只能包含未被实现的方法,也叫抽象方法,但是不能用 abstract 关键字。
⑧ 抽象类的访问速度比接口要快,接口是稍微有点慢,因为它需要时间去寻找在类中实现的方法。
⑨ 抽象类,除了不能被实例化外,与普通 java 类没有任何区别。
⑩ 抽象类可以有 main 方法,接口没有 main 方法。
⑪ 抽象类可以用构造器,接口没有。
⑫ 抽象方法可以有 public、protected 和 default 这些修饰符,接口只能使用默认 public。
⑬ 抽象类,添加新方法可以提供默认的实现,不需要改变原有代码。接口添加新方法,子类必须实现。
⑭ 抽象类的子类用 extends 关键字继承,接口用 implements 来实现。
二、什么时候用抽象类和接口
1. 若果你拥有一些方法并且想让他们中的一些有默认实现,那就用抽象类。
2. 如果你想实现多重继承,那么必须使用接口。由于 java 不支持多继承,子类不能继承多个父类,但是可以实现多个接口,因此你可以使用接口来实现它。
3. 如果基本基本功能在不断变化,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么所有实现类都需要改变。
普通类,抽象类和接口之间的区别相关推荐
- Java中类、抽象类、接口之间的区别和联系。
Java中类.抽象类.接口之间的区别和联系. 程序设计所面对的问题域--客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议).把客观世界中的事物映射到面 ...
- Java中抽象类和接口之间的区别
一些受欢迎的访谈问题是"抽象类和接口之间有什么区别","什么时候使用抽象类以及什么时候使用接口". 因此,在本文中,我们将讨论这个主题. 在探讨它们之间的差异之 ...
- 类、抽象类、接口之间的区别
目录 1.类与抽象类的异同之处 (1)类和抽象类的区别 (2)类和抽象类的相同之处 2.接口与类的异同之处 (1)接口与类相似点 (2)接口与类的区别 (3)接口特性 3.抽象类和接口的区别 1.类与 ...
- C#.NET里面抽象类和接口有什么区别
1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,它是面向对象 ...
- 抽象类和接口有什么区别
原文链接: javacodegeeks 转自:对抽象类与接口的一点思考 - Sharehub 很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题. ...
- php 抽象类 接口 区别,PHP中抽象类和接口有什么区别
PHP中抽象类和接口有什么区别 发布时间:2021-02-18 15:02:14 来源:亿速云 阅读:70 作者:Leah 这篇文章将为大家详细讲解有关PHP中抽象类和接口有什么区别,文章内容质量较高 ...
- lcd屏幕有mipi接口吗_LCD屏幕MIPI接口和LVDS接口之间的区别(摘要)
LCD屏幕接口类型包括LVDS接口,MIPI DSIDSI接口(以下仅讨论LCD屏幕LVDS接口显示屏的mipi接口定义显示屏的mipi接口定义,而没有讨论其他应用程序的LVDS接口,因此当涉及LVD ...
- java 抽象类和接口有什么区别
抽象类和接口区别 1 一个子类只能继承一个父类,但可以实现多个方法 2 抽象类可以有构造函数,属性,方法具体实现 接口不能有构造函数,属性,方法必须是抽象的 3 ...
- 什么是(抽象方法,普通方法,抽象类、接口),区别又是什么?
抽象方法与普通方法的区别 1.抽象方法不具有方法体 ,而普通方法有方法体 2.抽象方法需要用abstract修饰 //声明一个抽象类 abstract class Demo {//声明一个抽象方法ab ...
最新文章
- Android6.0------权限申请管理(单个权限和多个权限申请)
- margin和padding分别适合什么场景使用?
- DCMTK:测试DcmSCU的C-FIND / GET / MOVE会话处理
- Linux为什么可以在x86平台上运行,考虑在x86/Linux平台上的应用程序,以下指令执行时可能......
- OneZero团队Beta发布剧透
- CSS干货直击:腾讯无边界访问控制体系建设
- 最全的mysql 5.7.13_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!
- Python的10个神奇的技巧
- Unknown initial character set index ‘255‘ received from server.
- 使用webots对并联结构进行仿真
- Cannot pull, git cannot resolve reference ORIG_HEAD
- 什么情况下选用mysql_在MySQL中,‘%’可以用在什么情况下?
- android x86_646,雷电模拟器4.0x86_64位版本即android 7.1 xposed安装
- 精品电子书分享 – 《JavaScript Enlightenment.PDF》
- 《近匠》专访Ayla Networks云平台工程部主管Sudha Sundaresan——企业级物联网云平台的设计与部署
- 量子计算(1)量子力学基本理论(上)
- Android 银联控件支付开发流程
- 揭秘阿里、腾讯、字节跳动在家办公的区别
- 彻底卸载iNotePad软件
- 【基于Arduino RFID门禁系统】