110,539
社区成员
发帖
与我相关
我的任务
分享
public interface IA
{
void doA();
}
public interface IB
{
void doB();
}
public class C:IA,IB
{
void doA()
{
...
}
void doB()
{
...
}
}
现在我想这样:IA c=new C();
c.doA(); //可以调用
但是c.doB(); //不可以调用
if(c is IB)
{
(c as IB).doB();
}
IB c2=(IB)c;
c2.doB();
public interface IAExt:IA,IB
用class C来继承此接口并实现doA,doB两个方法;public class C:IAExt
{
void doA()
{
...
}
void doB()
{
...
}
}
使用的时候IAExt c=new C();
c.doA();
c.doB();
但是这样会多出很多本来不必要的重复接口,未实现别的功能,只是整合了一些接口而已。“应用程序的所有组件的代码始终不应该显式引用另一个组件中的类(无论是在声明中还是在
new
语句中)。 相反,应使用接口声明变量和参数。 ”
这个怎么理解啊?是不是说不能在一个类中实例化另一个类?哪方法的返回值如果是return new ...呢?难道说方法的返回值都定义成接口?那接口也太多了吧。。
接受参数的话也都是采用接口类型?那我如果想要访问那个变量的成员变量是不是都要定义成属性啊?
组件实例只应由组件的容器创建。
这个是说只能在类内部实例化自己?别的类如果要这个类型的对象必须要调用这个类的方法获取返回的对象?就是工厂方法?
他还说
必须将应用程序设计为使不同的组件不相互依赖,而只依赖接口定义。
难道说我在每个类里面进行运算的时候方法的参数什么的也必须是接口?
好像说到现在言下之意就是每个类对应一个接口咯?这。。。