C#学习之接口和抽象类
来源:互联网 发布:mac mini 2016会更新吗 编辑:程序博客网 时间:2024/06/05 05:25
坚持 成长 每日一篇
前言
一,接口和抽象类的相同点
1.抽象类和接口都包含可以由派生类继承的成员。
2.接口和抽象类都不 能直接实例化,但可以声明这些类型的变量。
3.可以声明接口和抽象类型的变量,变量可以指向派生类(继承接口或抽象类的类型)的对象,但是变量不能访问派生类的其他成员(函数或方法)
二,接口和抽象类的区别
1.派生类只能继承一个抽象类,但是可以继承多个接口
2.抽象类可以拥有函数体的非抽象方法,抽象方法必须在派生类种实现,出发派生类也是抽象的
接口成员必须都在使用接口的类上实现,他们没用函数体。
接口成员可以在使用该接口的抽象类上以抽象方法的方式实现
3.接口成员都是共有的,但是抽象成员确可以是私有的,受保护的,内部的
4.接口不能包含字段,构造函数,析构函数、静态成员或常量
三,两者的作用
抽象类主要用作对象系列的基类,共享某些主要特性,例如,共同的目的和结构。 接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务。
四,接口成员的定义与类成员的定义相似,但有几个重要的区别:
1.不允许使用访问修饰符(public、private、protected或internal),所有的接口成员都是公共的。接口成员不能包含代码体。
2.接口不能定义字段成员。
3.接口成员不能用关键字static、virtual、abstract或sealed来定义。
4.类型定义成员是禁止的。
5.但要隐藏继承了基接口的成员,可以用关键字 new 来定义它们
6.在接口中定义的属性可以定义访问块 get 和 set 中的哪一个能用于该属性(或将它们同时用于该 属性)
7.继承一个实现给定接口的基类,就意味着派生类隐式地支持这个接口
实例
1.在接口中定义的属性可以定义访问块 get 和 set 中的哪一个能用于该属性(或将它们同时用于该 属性)
interface IMyInterface { int MyInt { get; set; }}
2.实现接口的类必须包含该接口所有成员的实现代码,且必须匹配指定的签名(包括匹配指定的 get 和 set 块),并且必须是公共的。
public interface IMyInterface { void DoSomething(); void DoSomethingElse();}
public class MyClass : IMyInterface { public void DoSomething() { } public void DoSomethingElse() { } }
3.要隐藏继承了基接口的成员,可以用关键字 new 来定义它们,例如:
interface IMyBaseInterface { void DoSomething(); }interface IMyDerivedInterface : IMyBaseInterface { new void DoSomething(); }
4.可以使用关键字 virtual 或 abstract 来实现接口成员,但不能使用 static 或 const。还可以在基类 上实现接口成员
public interface IMyInterface { void DoSomething(); void DoSomethingElse(); } class MainClass:IMyInterface { public static void Main (string[] args) { Console.WriteLine ("Hello World!"); } public virtual void DoSomething () { System.Console.WriteLine ("DoSomething"); } public void DoSomethingElse () { System.Console.WriteLine ("DoSomethingElse"); } } abstract class AClass : IMyInterface { abstract public void DoSomething (); abstract public void DoSomethingElse (); }
- C#学习之接口和抽象类
- C#复习之抽象类和接口
- JAVA学习之抽象类和接口
- .NET学习之抽象类和接口
- PHP学习之抽象类和接口
- java学习之接口和抽象类
- c#之抽象类, 接口
- c# 抽象类和接口
- C# 抽象类和接口
- c#接口和抽象类
- C#抽象类和接口
- C#抽象类和接口
- C#接口和抽象类
- C#抽象类和接口
- c#抽象类和接口
- C#接口和抽象类
- C#抽象类和接口
- C# 抽象类和接口
- ffmpeg 安装 libwave 解决 /usr/include/wavpack/wavpack.h:60: error: expected specifier-qualifier-list
- Memcached性能检测
- android接入支持海外的支付,visa,mastercard
- poj2376
- webservice之WSDL解析
- C#学习之接口和抽象类
- zookeeperviewer
- Asp.net笔记
- Mysql CPU占用高的问题解决方法小结
- UML——宏观把控(一)
- llinux 的一些命令和错误
- 广义表的用法
- Unity3D教程:手游开发常用排序算法
- iOS 队列请求-超实用