关于接口与抽象类

接口与抽象类的区别总结一下,主要是摘自王涛的《你必须知道.Net》一书,在此感谢王涛老师。

1 相同点

1)都不能被直接实例化,都可以通过继承实现其抽象方法;

2)都是面向抽象编程的技术基础,实现了诸多的设计模式。

不同点:

1)接口支持多继承,抽象类不能实现多继承。严格意义上说,接口继承类应该称为类实现接口;

2)接口只能定义抽象规则;抽象类既可以定义规则,还可以提供已实现的成员;

3)接口是一组行为规范;抽象类是一个不完全的类,着重族的概念;

4)接口用于支持回调;因为继承不支持,所以抽象类在实现回调时有局限性。

接口可用作值类型与引用类型;抽象类只能用作引用类型。

接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性和包含的方法。

3 规则与场合

1)面向对象思想最重要的一个原则:面向接口编程;

2) 借助接口和抽象类,23个设计模式实现。简单的说,面向抽象编程,通过封装变化实现实体之间的关系;

3)抽象类主要用于关系密切的对象,而接口最适合为相关的类提供通用功能;

4) 接口着重于CAN-DO关系类型,而抽象类偏重于IS-A式的关系;

5) 接口多定义对象的行为;抽象类多定义对象的属性;

6) “接口不变”,是应该考虑的重要因素;

7) 在接口中,所有的方法默认为public;

8) 在抽象方法声明中,不能使用static或virtual修饰符。

时间: 2024-10-11 16:54:22

关于接口与抽象类的相关文章

Java 接口和抽象类区别

1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了.当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 .面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用. 说到了抽象,我就不能不提到曾让我头痛的Java接口和Java抽象类了,这也是本文我想说的重点. 既然面向对象设计的重点在于

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

C#中接口和抽象类的区别

什么是接口? 用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).C#接口可以从多个基接口继承,而类或结构可以实现多个接口.C#接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 如何使用接口? 例如: <span style="font-family:KaiTi_GB2312;">using System; using System.Co

C#OOP之八 继承 接口和抽象类

继承 在现实生活中有所谓的"种瓜得瓜.种豆得豆"的说法,在生物学概念上就是"遗传"的概念,在面向对象中"继承"就类似于生物学中的遗传,通过继承,可以更好的实现代码的重用(复用,多次使用的意思).增加扩展性.简化代码等. 下面是现实生活中的引用: 定义与使用继承 继承一次最常用的就是通过合法程序(比如遗嘱)从别人那里接受财产或爵位等,有点类似于世袭制. 另外一个含义,是人从父母那里继承一些特征,如果孩子从父母继承的身高.相貌等特征.那么在什么情况下

接口和抽象类

接口和抽象类有什么区别?接口和抽象类是不一样的概念,接口是对行为的抽象,抽象类,还是类,是对一类事物的抽象,是对根源的抽象.也就是说接口表示的是对象能够做什么,有什么行为.而抽象类是这个对象是什么.所以在接口和抽象类的使用上面,如果是对行为抽象,用接口.对是什么抽象用抽象类.另外,抽象类和接口在语法上面也有一些不同.1,接口中所有的方法都是抽象方法,抽象类中可以有(不一定有)抽象方法.2,接口中的成员变量默认都是public.static.final类型的,必须被显式初始化.3,接口中的方法会被

深入理解Java的接口和抽象类

对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/

接口 和 抽象类

前言:一个类能实现多个接口,抽象类只能被一个类继承. 今天和周敏去吃饭,别人问的是:接口和抽象类有什么区别,你连一点头绪都没有 别人还知道接口是用interface定义的,抽象类是用abstract class定义的(啊不石爪克特) 1.抽象类不能实例化对象,抽象类的其他功能和普通类是相似的: 比如成员变量,成员方法,构造方法,访问方式都和普通类是一样的 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用 抽象方法:是用abstract定义的 Public abstract double

接口和抽象类有什么区别

你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类(如果是类的话--),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把"吃东西"定义成一个接口,然后让这些类去实现它. 所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口.走路接口). 第一点. 接

[Think In Java]基础拾遗1 - 对象初始化、垃圾回收器、继承、组合、代理、接口、抽象类

目录 第一章 对象导论第二章 一切都是对象第三章 操作符第四章 控制执行流程第五章 初始化与清理第六章 访问权限控制第七章 复用类第九章 接口 第一章 对象导论 1. 对象的数据位于何处? 有两种方式在内存中存放对象: (1)为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或者静态存储区域内来实现.这种方式牺牲了灵活性. (2)在被称为堆的内存池中动态地创建对象.在这种方式,知道运行时才知道对象需要多少对象,它们的生命周期如何,以及它们的具体类型.

Java知多少(40)接口和抽象类的区别

类是对象的模板,抽象类和接口可以看做是具体的类的模板. 由于从某种角度讲,接口是一种特殊的抽象类,它们的渊源颇深,有很大的相似之处,所以在选择使用谁的问题上很容易迷糊.我们首先分析它们具有的相同点. 都代表类树形结构的抽象层.在使用引用变量时,尽量使用类结构的抽象层,使方法的定义和实现分离,这样做对于代码有松散耦合的好处. 都不能被实例化. 都能包含抽象方法.抽象方法用来描述系统提供哪些功能,而不必关心具体的实现. 下面说一下抽象类和接口的主要区别. 1) 抽象类可以为部分方法提供实现,避免了在