一.抽象类(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的更多相关文章

  1. Java abstract class 和 interface 的区别

    Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...

  2. 深入理解abstract class和interface(转)

    原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口

  3. abstract class和interface 知多少!!!

    1.相同点   A. 两者都是抽象类,都不能实例化.   B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法. 2. 不同点   A. interface需 ...

  4. 解决: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- ...

  5. 11)Java abstract class 和 interface

    abstract class 和 interface 的区别        含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义 ...

  6. 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface

    关键字: Type– 类型 Class - 类 Abstract - 抽象的 Interface - 接口 Member - 成员 Method - 方法 Property - 属性 预备知识:在阅读 ...

  7. abstract class与interface的区别与联系

    1.相同点:A. 两者都是抽象类,都不能实例化.B. interface实现类及abstract class的子类都必须要实现已经声明的抽象方法. 2. 不同点:A. interface需要实现,要用 ...

  8. 【转载】java abstract class和interface的区别

    转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...

  9. 深入理解abstract class和interface

    摘自:http://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/ (如有侵权,请留言,版主将立即删除) abstract c ...

  10. 关于abstract class 和 interface

    1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系.但是,一个类却可以实现多个interface. 2.在abstract class 中可以有自己 ...

随机推荐

  1. Javaweb 第1天 HTML和CSS课程

    HTML和CSS课程 今日大纲 ● 了解Java    Web开发 ● HTML常用标签 ● CSS的使用 ********************************************** ...

  2. MapReduce初级案例

    1.数据去重  "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重.下面就 ...

  3. java多维数组

    int a[][][] = {{{1,2},{1,2}},{{1,2},{1,2}}}; int b[][][] = new int[][][]{{{1,2},{1,2}},{{1,2},{1,2}} ...

  4. 使用putty上传文件到linux系统

    使用window的cmd命令 上传文件到linux  使用putty下的 pscp.exe pscp -r -l root -pw 1234567890 e:/htk 192.168.0.204:/r ...

  5. hdu_1848_Fibonacci again and again(博弈sg函数)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 题意:给你3堆石子,每次只能取fibonacci数的石子,问先手是否能赢 题解:SG函数模版题 ...

  6. csu1010: Water Drinking

    /* 本题的题意: 沙漠中有很多骆驼和一个池塘,0表示池塘,1-N表示骆驼,输入的两个数表示两只骆驼,其中前面的那一头靠近池塘,所有的骆驼队列不交叉不相连,求站在队尾但是离水井最近的骆驼编号 经过分析 ...

  7. openwrt ramips随记

    ar71xx / brcm47xx / brcm63xx / ramips是指cpu的系列,ramips是指ralink系列的

  8. LeetCode OJ 104. Maximum Depth of Binary Tree

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  9. unix文件系统

    转自here 我一向坚持的原则,那就是任何东西的根本性的,本质上的原理以及背后的思想都是及其简单的,所谓的复杂性都是优化与策略化的扩展带来的,正如TCP一样,UNIX的文件系统也不例外!我们必须知道, ...

  10. ios网站

    www.diveinedu.cn/nav/index.html