静态接口问题。
///
///接口
///
public interface IAnimal
{
void SetName(string name);
}
///
///继承接口的实体类
///
public class Cat : IAnimal
{
//name属性
private _Name
public string Name
{
get{return _Name;}
set{_Name=value;}
}
//实现接口的SetName方法
public void SetName(string name)
{
this.Name = name;
}
}
///
///业务层方法
///
public class BLL_Cat
{
private static IAnimal objCat = new Cat(); //静态接口,问题来了,继续看。
public void SetName(string value)
{
objCat.SetName(value);
}
...
}
///
///用户层
///
public class WebApplication1
{
BLL_Cat cat1 = new BLL_Cat();
cat1.SetName("first cat name"); //给第一只cat取一个name
BLL_Cat cat2 = new BLL_Cat();
cat2.SetName("second cat name"); //给第二只cat取一个name
}
======================
问题是:
1. 在业务层中,声明了一个静态的接口类型的实例,那么在用户层中,'给第二只cat取一个name'时,第一只cat的name会不会改变呢?
2. 如果把“private static IAnimal objCat = new Cat(); ”,改成“private IAnimal objCat = new Cat(); ”呢?
3. 如果把“private static IAnimal objCat = new Cat(); ”,改成“private Cat objCat = new Cat();”呢?
谢谢。
问题点数:50、回复次数:2Top
1 楼JeffreyZhao()回复于 2006-07-02 13:14:23 得分 50
1.会,不管BLL_Cat是什么实例,SetName方法修改的总是那个static的objCat。
2.不会,objCat是类实例的成员了。
3.Cat还是IAnimal和这个问题无关,和2属于一种情况。Top
2 楼simpsons(辛普森)回复于 2006-07-02 14:37:34 得分 0
同意。我试过了。结贴。Top




