二、接口(interface)
还是用一个例子来说明:
using System;//包含基本类和基类
using System.Collections.Generic;//定义泛型集合的接口和类
using System.Linq;//支持语言集成查询
using System.Text;//包含用于字符编码等功能的对象
namespace Test
{
class Program
{
static void Main(string[] args)
{
UseInterface u = new UseInterface();//创建对象,调用方法
u.SayHello();
Console.ReadKey();
}
}
/// <summary>
/// 定义了一个接口FirstInterface
/// </summary>
interface FirstInterface
{
string Name//定义了一个属性
{
get;
set;
}
void SayHello();//关键定义了方法,但是没有方法体!
}
/// <summary>
/// 既然已经继承了接口,那必须要实现接口中的全部属性,方法等,缺一不可,
/// 例如如果不实现Name属性,程序就会报错!
/// </summary>
class UseInterface : FirstInterface
{
string name = "我的名字叫龙腾!";
public string Name//重新实现接口中的属性
{
get { return name; }
set { name = value; }
}
/// <summary>
/// 实现接口中的方法,这里不需要像多态中用到的 override 改写方法,直接拿过来加上方法体就可!
/// </summary>
public void SayHello()
{
Console.WriteLine("大家好!"+this.name);
}
三、抽象
抽象类和接口有一些相似之处,它们都包含由派生类继承的成员,接口和抽象类都不能直接实例化!(虚的东西你怎么能拿来使用呢对吧?必须要使用第三方的东西来搭桥)
using System;//包含基本类和基类
using System.Collections.Generic;//定义泛型集合的接口和类
using System.Linq;//支持语言集成查询
using System.Text;//包含用于字符编码等功能的对象
namespace Test
{
class Program
{
static void Main(string[] args)
{
UseMyAbstract u = new UseMyAbstract();//创建对象,调用方法
u.SayHello();
Console.ReadKey();
}
}
/// <summary>
/// 定义一个抽象类MyAbstract
/// </summary>
abstract class MyAbstract
{
public abstract void SayHello();//定义一个抽象方法,同样没有方法体!
}
/// <summary>
///定义一个 UseMyAbstract类 继承 MyAbstract抽象类
/// </summary>
class UseMyAbstract : MyAbstract
{
public override void SayHello()//改写抽象类MyAbstract中的方法SayHello()
{
Console.WriteLine("大家好!我是龙腾!");
}
}