C# 它 抽象类和接口
抽象类
C#同意把类和方法声明为abstract,即抽象类和抽象方法。抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的对象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是详细类,而树枝节点均应当是抽象类。抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。
注意:1.抽象类不能实例化;2.抽象方法是必须被子类重写的方法。3.假设类中包括抽象方法,那么类就必须定义为抽象类。不论是否还包括其它一般方法。
接口
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就能够支持接口所指定的全部属性和成员。声明接口在语法上与声明抽象类全然同样,但不同意提供接口中不论什么成员的运行方式。
所以接口不能实例化。不能有构造方法和字段;不能有修饰符,比方public、private等;不能声明虚拟的或静态的等。还有实现接口的类就必需要实现接口中的全部方法和属性。
接口用interface声明。而不是class。接口名称前要加‘I',接口中的方法或属性前面不能有修饰符、方法没有方法体。
抽象类与接口的差别:
类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。
假设行为跨越不同类的对象,可使用接口。对于一些相似的类对象,用继承抽象类
从设计角度讲。抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类。而接口是根本不知子类的存在,方法怎样实现还不确认,预先定义。
抽象类和接口都包括能够由派生类继承的成员。接口和抽象类都不能直接实例化,但能够声明这些类型的变量。假设这样做,就能够使用多态性把继承这两种类型的对象指定给他们的变量。
接着通过这些变量来使用这些类型的成员。但不能直接訪问派生对象的其它成员。
派生类仅仅能继承一个基类。即仅仅能够直接继承一个抽象类(可是能够用一个继承链包括多个抽象类)。相反,类能够使用随意多个接口。但这不会产生太大的差别——这两种情况取得的效果是类似的,仅仅是採用接口的方式略有不同。
抽象类能够拥有抽象成员(没有代码体,且必须在派生类中实现,否则派生类本身必须也是抽象的)用非抽象成员(它们拥有代码体。也能够是虚拟的,这样就能够在派生类中重写)。
还有一方面。接口成员必须都在使用接口的类上实现——它们没有代码体。另外,依照定义。接口成员是公共的(由于它们倾向于在外部使用),但抽象类的成员能够是私有的(仅仅要它们不是抽象的)、受保护的、内部的或受保护的内部成员(当中受保护的内部成员仅仅能在应用程序的代码或派生类中訪问)。
此外,接口不能包括字段、构造函数、析构函数、静态成员或常量。
抽象类主要用作对象系列的基类,共享某些主要特性,比如。共同的目的和结构。
接口则主要用于类,这些类在基础水平上有所不同,但仍能够完毕某些同样的任务。
抽象类能够给出一些成员的实现,接口却不包括成员的实现,抽象类的抽象成员可被子类部分实现,接口的成员须要实现类全然实现,一个类智能继承一个抽象类。但可实现多个接口等等。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
C# 它 抽象类和接口的更多相关文章
- 抽象类 VS 接口
引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...
- java抽象类和接口
面向对象设计过程中重要的一点是如何进行抽象,即把"问题空间"中的元素与"方案空间"中的元素建立理想的一对一的映射关系.抽象类和接口便是抽象过程中的产物. ...
- php中抽象类与接口的概念以及区别
php里面的接口类,抽象类到底有什么用呢? 刚接触php的时候,觉得这个东西没什么用,其实这些东西还是有一定的作用的,下面我就简单的说说. 1.php 接口类:interface 其实他们的作用很简单 ...
- Java 抽象类与接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是 Java 语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予 Java 强大的面向对象的能力.他们两者之间对 ...
- 浅谈我对C#中抽象类与接口的理解
C#中的抽象类与接口有些相似,初学者很容易混淆,今天就让我来谈谈对二者的理解. 首先我们得明确二者的含义,分述如下: 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个 ...
- Atitit 深入理解抽象类与接口 attilax总结
Atitit 深入理解抽象类与接口 attilax总结 1.1. 主要区别接口侧重于动作抽象..抽象类是属性名词抽象..1 1.2. 抽象层次类>>抽象类>>接口1 1.3. ...
- luogg_java学习_07_抽象类_接口_多态学习总结
这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 抽象 一种专门用来做父类,被继承的. (模板) 格式: abs ...
- PHP中抽象类,接口定义
这里先介绍接口,因为在我最近看的好几本php工具书中都没有提到抽象类. 本人也觉得,在理解了接口后抽象类也非常好理解. 例子代码随便写了一下.例子代码是很ok的,测试过了不会报错,懒得看代码的筒靴们看 ...
- 0026 Java学习笔记-面向对象-抽象类、接口
抽象方法与抽象类 抽象方法用abstract修饰,没有方法体部分,连花括号都不能有: 抽象方法和抽象类都用abstract修饰 包含抽象方法的类一定是抽象类:但不包含抽象方法的类也可以是抽象类 不能创 ...
- Java抽象类与接口的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...
随机推荐
- UILabel可以显示html文本
NSString * htmlString = @"<html><body> Some html string \n <font size=\"13\ ...
- IOS7修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色
解决方法 1: 自从IOS7后UINavigationBar的一些属性的行为发生了变化.你可以在下图看到: 现在,如果你要修改它们的颜色,用下面的代码: 1 2 3 4 self.navigation ...
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)
一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...
- svn笔记2
Examining History Your Subversion repository is like a time machine. It keeps a record of every chan ...
- larbin是一种开源的网络爬虫/网络蜘
larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发.larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源.Lar ...
- leetcode第一刷_Maximal Rectangle
这个题比刚才那个更难. 假设没做过上一个,这个简直是无情. 先想一个笨笨的解法,如何确定一个矩形呢?找一个左上角,然后每行的看能延伸到什么位置.注意随着行数的添加,列数是仅仅能变短,不能变长. 想一下 ...
- MYSQL设计优化
本文将从各方面介绍优化mysql设计的一些方式. 1.优化sql语句 (1)定位须要优化的sql语句 1)show status统计SQL语句频率 对Myisam和Innodb存储引擎都计数的參数: ...
- 中科燕园GIS外包---地铁GIS项目
(1)地铁保护及project地质管理 • 地铁保护 地铁交通既有运量大,速度快的特点,又有差别于其它交通方式的在地下执行的空间特殊性,因此地铁的保护显得尤为重要. 首先必须编制完整的 ...
- Javascript DOM 02 在<ul>中创建、删除 <li>
创建DOM元素 createElement(标签名) 创建一个节点 appendChild(节点) 追加一个节点 例子:为ul插入li 插入元素 insertBefore(节点, 原有节点) 在 ...
- javascript笔记整理(正则)
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具 var re=/e/; var re=new RegExp('e'); 正则表达式的 String 对象的方法 1.search- ...