不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
关于接口多态性一点说明
编辑:dnawo 日期:2009-05-09
在讲述接口多态性时我们常看到类似的例子:
这边Anmial类的Move方法是孤立的,和其他成员没有关系,如果Anmial类还有一个Name属性,Move方法如下:
现在的问题是,Name不是IAction的成员,我们不能使用多态性对它进行赋值,那怎么给这个Name赋值呢?看下边方法:
这样接口多态性优势根本就无法显示出来了,解决方法是必须给Anmial添加一个非默认构造函数,在构造函数中必须可以给Name赋值!代码改后如下:
复制内容到剪贴板
程序代码

//接口
interface IAction
{
void Move();
}
//类
class Anmial : IAction
{
//实现接口成员
public void Move()
{
Console.WriteLine("Go! Go! Go!");
}
}
//调用
class Program
{
static void Main(string[] args)
{
IAction action = new Anmial();
action.Move();
Console.ReadKey();
}
}
interface IAction
{
void Move();
}
//类
class Anmial : IAction
{
//实现接口成员
public void Move()
{
Console.WriteLine("Go! Go! Go!");
}
}
//调用
class Program
{
static void Main(string[] args)
{
IAction action = new Anmial();
action.Move();
Console.ReadKey();
}
}
这边Anmial类的Move方法是孤立的,和其他成员没有关系,如果Anmial类还有一个Name属性,Move方法如下:
复制内容到剪贴板
程序代码

public void Move()
{
Console.WriteLine(Name + ",Go! Go! Go!");
}
{
Console.WriteLine(Name + ",Go! Go! Go!");
}
现在的问题是,Name不是IAction的成员,我们不能使用多态性对它进行赋值,那怎么给这个Name赋值呢?看下边方法:
复制内容到剪贴板
程序代码

//接口
interface IAction
{
void Move();
}
//类
class Anmial : IAction
{
private string _name;
/// <summary>
/// 名字
/// </summary>
public string Name
{
set { _name = value; }
get { return _name; }
}
//实现接口成员
public void Move()
{
Console.WriteLine(Name + ",Go! Go! Go!");
}
}
//调用
class Program
{
static void Main(string[] args)
{
Anmial anmial = new Anmial();
anmial.Name = "Jack";
IAction action = anmial;
action.Move();
Console.ReadKey();
}
}
interface IAction
{
void Move();
}
//类
class Anmial : IAction
{
private string _name;
/// <summary>
/// 名字
/// </summary>
public string Name
{
set { _name = value; }
get { return _name; }
}
//实现接口成员
public void Move()
{
Console.WriteLine(Name + ",Go! Go! Go!");
}
}
//调用
class Program
{
static void Main(string[] args)
{
Anmial anmial = new Anmial();
anmial.Name = "Jack";
IAction action = anmial;
action.Move();
Console.ReadKey();
}
}
这样接口多态性优势根本就无法显示出来了,解决方法是必须给Anmial添加一个非默认构造函数,在构造函数中必须可以给Name赋值!代码改后如下:
复制内容到剪贴板
程序代码

//接口
interface IAction
{
void Move();
}
//类
class Anmial : IAction
{
private string _name;
/// <summary>
/// 名字
/// </summary>
public string Name
{
set { _name = value; }
get { return _name; }
}
//构造函数(必须)
public Anmial(string name)
{
Name = name;
}
//实现接口成员
public void Move()
{
Console.WriteLine(Name + ",Go! Go! Go!");
}
}
//调用
class Program
{
static void Main(string[] args)
{
IAction action = new Anmial("Jack");
action.Move();
Console.ReadKey();
}
}
interface IAction
{
void Move();
}
//类
class Anmial : IAction
{
private string _name;
/// <summary>
/// 名字
/// </summary>
public string Name
{
set { _name = value; }
get { return _name; }
}
//构造函数(必须)
public Anmial(string name)
{
Name = name;
}
//实现接口成员
public void Move()
{
Console.WriteLine(Name + ",Go! Go! Go!");
}
}
//调用
class Program
{
static void Main(string[] args)
{
IAction action = new Anmial("Jack");
action.Move();
Console.ReadKey();
}
}
评论: 0 | 引用: 0 | 查看次数: 3498
发表评论
请登录后再发表评论!