一.抽象类(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. css sprite的使用心得

    提高网页显示速度最有效的一个方法是减少页面的HTTP请求次数,为了减少HTTP请求次数,最直接有效的方法是使用精灵图片(CSS sprites),精灵图片是把许多图片放到一张大图片里面,通过CSS来显 ...

  2. 远程桌面协议浅析(VNC/SPICE/RDP)

    由于最近项目涉及到虚拟桌面,就花了点时间找了点资料看了一下,目前常用的协议有VNC/SPICE/RDP三种,就在这里做一个简单的介绍. 三种协议的对比 SPICE VNC RDP BIOS屏幕显示 能 ...

  3. ajax基本使用

    ajax在用于异步交互以来,一直被广泛使用,其使用语法格式基本如下: 基本格式为$.ajxa({ type:"",数据传送方式POST,GET url:"",处 ...

  4. jQuery实现 图片的局部放大效果

    <html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> ...

  5. 第四十一节,xml处理模块

    XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下 读xml文件 <data> <country name="Liechtenstein"> ...

  6. NoSQL数据库种类

    NoSQL数据库的四大分类   键值(Key-Value)存储数据库   这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据.Key/value模型对于IT系统来说的优 ...

  7. divide an integer into X parts (as even as possible)

    the algorithm is like this: it evenly spreads an integer N over K cells. for i = 0 to K array[i] = N ...

  8. python2.x 使用protobuf

    1.在windows下配置protobuf 1.1 下载对应的包,包含两个:protoc.exe和源码文件(protoc也可以自己生成) 下载地址1 --- google code最近在迁移,也许以后 ...

  9. Happy Matt Friends

    Happy Matt Friends Time Limit: 6000/6000 MS (Java/Others)    Memory Limit: 510000/510000 K (Java/Oth ...

  10. Hibernate 系列教程12-继承-Join策略

    Employee public class Employee { private Long id; private String name; HourlyEmployee public class H ...