abstract class 与interface
一.抽象类(absteact class)
特点:
1.抽象方法只作说明,而不包含实现,可以看成是没有实现体的虚方法
2.抽象类不能被实例化。除此之外,具有类的其他特性
3.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
4.具体派生类必须覆盖基类的抽象方法
5.抽象类可以派生自另一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖他们
二.接口(interface)
特点
1.不能被实例化
2.只能包含实现的方法声明
3.成员可以包含方法、属性、索引器和事件
4.接口中不能包含常量、字段、构造函数和静态成员
5.接口中的所有成员默认为public,因此接口中不能有private修饰符
6.派生类必须实现接口的所有成员
7.一个类可以直接实现多个接口,接口之间用逗号隔开
8.一个接口可以有多个父接口,实现该接口的类必须实现所有父接口中的所有成员
三.抽象类和接口的相同点
1.都可以被继承
2.都不能被实例化
3.都可以包含方法声明
4.派生类必须实现未实现的方法
四.抽象类和接口的区别
1.抽象类是一个不完整的类,需要进一步细化,而接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做...”
2.抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件和方法声明,不能包含字段
3.抽象类更多的是定义在一系列紧密相关类之间,而接口大多数是定义在关系疏松但都实现某一功能的类中
4.接口基本上不具备继承的任何特点,它仅仅承诺了能够调用的方法
5.接口可以被多重实现,抽象类只能被单一继承。即一个类一次可以实现若干个接口,但只能继承一个父类
趣味理解:
飞机会飞,鸟会飞,它们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类。
就像猫和狗都是动物(抽象类),你想要个动物类我给不了(不能实例化),但是我可以给你个具体的猫或狗(多态);而且只能说它是动物,你不能说它是人(单继承);一个动物可以会吃(接口)也可以有毛(多实现)。抽象类(动物)定义了它是什么,接口(吃)规定了它能做什么(一个接口最好只能做一件事,你不能要求吃也能长毛吧(接口染))
abstract class 与interface的更多相关文章
- Java abstract class 和 interface 的区别
Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...
- 深入理解abstract class和interface(转)
原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口
- abstract class和interface 知多少!!!
1.相同点 A. 两者都是抽象类,都不能实例化. B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法. 2. 不同点 A. interface需 ...
- 解决:mvn archetype:create Abstract class or interface 'org.apache.maven.artifact.repository.ArtifactRepository' cannot be instantiated
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2 .3:create (default- ...
- 11)Java abstract class 和 interface
abstract class 和 interface 的区别 含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义 ...
- 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface
关键字: Type– 类型 Class - 类 Abstract - 抽象的 Interface - 接口 Member - 成员 Method - 方法 Property - 属性 预备知识:在阅读 ...
- abstract class与interface的区别与联系
1.相同点:A. 两者都是抽象类,都不能实例化.B. interface实现类及abstract class的子类都必须要实现已经声明的抽象方法. 2. 不同点:A. interface需要实现,要用 ...
- 【转载】java abstract class和interface的区别
转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...
- 深入理解abstract class和interface
摘自:http://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/ (如有侵权,请留言,版主将立即删除) abstract c ...
- 关于abstract class 和 interface
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系.但是,一个类却可以实现多个interface. 2.在abstract class 中可以有自己 ...
随机推荐
- List泛型集合常用方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace List ...
- arguments对象,caller 和 callee
arguments对象是比较特别的一个对象,arguments非常类似Array,但实际上又不是一个Array实例. 它指的是函数对象里的参数,且只能在函数内部使用. 使用 检测函数的参数个数,引用属 ...
- perl Socket接收超时设置
一般来说, IO::Socket::INET里的Timeout设置是对于conncet的 如果你想设置recv接收超时, 可以这样设置: usr Socket: ...... , )); #注意这里p ...
- InnoDB表要建议用自增列做主键
InnoDB引擎表是基于B+树的索引组织表(IOT): 每个表都需要有一个聚集索引(clustered index): 所有的行记录都存储在B+树的叶子节点(leaf pages of the tre ...
- CSSHack 兼容性
史上最全的CSS hack方式一览 CSS hack技巧大全 Can i use CSS hack CSS hack 由于不同厂商的流览器或某浏览器的不同版本(如IE6-IE11,Fire ...
- CSS简介模块
CSS3完全向后兼容. 选择器 盒模型 背景和边框 文字和特效 2D.3D特效 动画 多列布局 用户界面 今天先做个开始,今后每一天学习一点点.
- 使用inpaint例子,去除水印
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=33151 #include "stdafx.h" #inclu ...
- react中文API解读一(快速开始)
记下自己的react学习之路 ,官方文档写的很详尽,学起来应该比较简单 官方文档地址:react.http://reactjs.cn/react/docs/getting-started.html 1 ...
- Entity Framework技巧系列之五 - Tip 16 – 19
提示16. 当前如何模拟.NET 4.0的ObjectSet<T> 背景: 当前要成为一名EF的高级用户,你确实需要熟悉EntitySet.例如,你需要理解EntitySet以便使用 At ...
- Centos中压缩(zip)和解压(unzip)命令
摘自:http://liuzhichao.com/p/681.html 1.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip 2.我当前目录下有abc1.zip,ab ...