C#日写点滴(3)
来源:互联网 发布:淘宝刷访客 编辑:程序博客网 时间:2024/06/08 12:20
接口:
(1)声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。一般情况下,接口中只能包含方法、属性、索引器和事件的声明。
格式:
public interface IMyInterface
{
}
(2)不能实例化接口,它只能包含其成员的签名。接口不能有构造函数或字段(因为这隐含了某些内部的执行方式)。接口定义也不允许去处符重载,这不是因为声明它们在原则上有什么问题,而是因为接口通常是公共契约,包含运算符重载会一些与其它.NET语言不兼容问题。例如与vb不兼容,因为vb不支持运算符重载。
接口定义中还不允许声明成员上的修饰符。接口成员总是公共的,不能声明为虚拟或静态。
接口引用完全可以看作是类的引用--但接口的强大之处在于,它可以引用任何实现该接口的类!
如:IMyInterface[] person=new IMyInterface[2];
person[0]= new PersonMan();
person[1]= new PersonWoman();
其中PersonMan,PersonWoman 为都实现了IMyInterface接口声明的签名。
(3)接口可以彼此继承,其方式与类的继相同。
public interface IMyInerfaceOther:IMyInerface
{
//接口新方法声明
}
示例:
using System;
using inMain;
using CaiJQ0;
using CaiJQ1;
using CaiJQ2;
using CaiJQ3;
using CaiJQ4;
/// <summary>
/// Summary description for Class1
/// </summary>
///
namespace inMain
{
public class Class1
{
static void Main()
{
IMyInerface[] person = new IMyInerface[2];
person[0] = new PersonMan();
person[1] = new PersonWoman();
person[0].Name = "XiaoXiao";
person[0].Age = 10;
person[0].ShowInfo();
person[1].Age = 20;
person[1].Name = "fengfeng";
person[1].ShowInfo();
IMyInerfaceOther personVenus = new PersonVenus();
personVenus.Name = "Venus";
personVenus.Age = 200;
personVenus.ShowInfo();
personVenus.fly();
}
}
}
namespace CaiJQ0
{
public interface IMyInerface
{
int Age
{
get;
set;
}
string Name
{
get;
set;
}
void ShowInfo();
}
}
namespace CaiJQ1
{
public interface IMyInerfaceOther:IMyInerface
{
void fly();
}
}
namespace CaiJQ2
{
public class PersonMan : IMyInerface
{
public string name;
private int age;
public void ShowInfo()
{
Console.WriteLine("PersonMan Name is:{0},age is:{1}",name, age);
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public string Name
{
get { return name; }
set { name = value; }
}
public void Play()
{
Console.WriteLine("PersonWoman like Play method!");
}
}
}
namespace CaiJQ3
{
public class PersonWoman : IMyInerface
{
public string name;
private int age;
public void ShowInfo()
{
Console.WriteLine("PersonWoman Name is:{0},age is:{1}", name, age);
}
public void sing()
{
Console.WriteLine("PersonWoman like sing method!");
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public string Name
{
get { return name; }
set { name = value; }
}
}
}
namespace CaiJQ4
{
public class PersonVenus : IMyInerfaceOther
{
public string name;
private int age;
public void ShowInfo()
{
Console.WriteLine("PersonVenus Name is:{0},age is:{1}", name, age);
}
public void fly()
{
Console.WriteLine("PersonVenus like fly method!");
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public string Name
{
get { return name; }
set { name = value; }
}
}
}
- C#日写点滴(3)
- C#日写点滴(1)
- C#日写点滴(2)
- C#日写点滴(4)
- C#点滴
- C#点滴
- C#点滴
- 3.6日~点滴
- 2014年3月13日 记录司法考试的点滴
- 写paper的点滴
- C#经验点滴
- 记录C#的点滴
- C#经验点滴
- C#的点滴
- C#点滴1
- C#点滴(接口)
- C#点滴(程序集)
- c#学习点滴
- js验证电话号码
- 如何学习嵌入式系统(基于ARM平台)
- 插件式框架(大道至简)
- ACCESS的真假:四、"SELECT * INTO 工作表 FROM 临时表" 比 "CREATE TABLE 工作表 (...)" 速度快?
- 在HP-UX 11.11用swinstall安装gcc 4.2.3
- C#日写点滴(3)
- SQL SERVER 不能连接的完美解决方案
- jQuery动态加载页面和请求所返回的数据
- select into 和 insert into select 两种表复制语句
- 面试题精选(65):迷宫最优解的宽度优先解法
- C#创建xml文件
- 使用 decimal、float ,numeric,money和 real 数据类型
- sql连接类型:内连接、外连接和交叉连接
- AC 经典多模式匹配算法