C#中接口问题
来源:互联网 发布:苹果怎么开4g网络 编辑:程序博客网 时间:2024/04/29 19:39
interface IA //接口IA
{
void F(); //接口IA 方法;
}
class A:IA //类A继承于接口IA
{
void IA.F() //接口IA的方法F(), 前面不可有public或者其他修饰符.
{
Console.Write("IA.F()");
}
public void F() //类A的方法F();
{
Console.Write("A.F()");
}
}
class B:A, IA //类B继承于类A, 而且又继承于接口IA.
{
new public void F() //类B的方法.
{
Console.Write("B.F()");
}
}
class Test
{
public static void Main()
{
A c=new B(); //新建一个类B, 并将此类B强制赋予类A的实例c.
((IA)c).F(); //写出实例c的IA接口的方法F().
}
}
结果:B.F()
结论: 如果有继承的父类并且映射到接口,而且此类也映射到和父类相同的接口, 如上. 这个时候就应该忽略父类的映射接口的影响.而是直接从接口中得到.
范例2:改写 A c=new B();
c.F();
结果:A.F()
结论:新建类B(),并将它赋予类A的实例c, 所以只能是类A中的方法.如果类B()中有一个方法叫G(), 类A中没有, 若执行c.G()这个时候会弹出错误,说明实例c所对应的类A没有方法G(). 所以对于这种情况一定认清前面的类A为对象实例的类, 而不是后面的类B.
using System;
interface IA
{
void F();
}
class A:IA
{
void IA.F() //-----Interface IA method F() implement
{
Console.Write("IA.F()");
}
public void F() //------class A method F().
{
Console.Write("A.F()");
}
}
class B:A
{
new public void F()
{
Console.Write("B.F()");
}
public void G()
{
Console.Write("B.G()");
}
}
class Test
{
public static void Main()
{
A c=new B();
c.F();
}
}
Result:
A.F()
结论: 此时类A的实例c, 直接从A的方法F()调用出来.
范例二:
如果将
A c=new B();
((IA)c).F();
结果是:
IA.F()
结论是此时会从类A中接口的IA方法调用出来.
{
void F(); //接口IA 方法;
}
class A:IA //类A继承于接口IA
{
void IA.F() //接口IA的方法F(), 前面不可有public或者其他修饰符.
{
Console.Write("IA.F()");
}
public void F() //类A的方法F();
{
Console.Write("A.F()");
}
}
class B:A, IA //类B继承于类A, 而且又继承于接口IA.
{
new public void F() //类B的方法.
{
Console.Write("B.F()");
}
}
class Test
{
public static void Main()
{
A c=new B(); //新建一个类B, 并将此类B强制赋予类A的实例c.
((IA)c).F(); //写出实例c的IA接口的方法F().
}
}
结果:B.F()
结论: 如果有继承的父类并且映射到接口,而且此类也映射到和父类相同的接口, 如上. 这个时候就应该忽略父类的映射接口的影响.而是直接从接口中得到.
范例2:改写 A c=new B();
c.F();
结果:A.F()
结论:新建类B(),并将它赋予类A的实例c, 所以只能是类A中的方法.如果类B()中有一个方法叫G(), 类A中没有, 若执行c.G()这个时候会弹出错误,说明实例c所对应的类A没有方法G(). 所以对于这种情况一定认清前面的类A为对象实例的类, 而不是后面的类B.
using System;
interface IA
{
void F();
}
class A:IA
{
void IA.F() //-----Interface IA method F() implement
{
Console.Write("IA.F()");
}
public void F() //------class A method F().
{
Console.Write("A.F()");
}
}
class B:A
{
new public void F()
{
Console.Write("B.F()");
}
public void G()
{
Console.Write("B.G()");
}
}
class Test
{
public static void Main()
{
A c=new B();
c.F();
}
}
Result:
A.F()
结论: 此时类A的实例c, 直接从A的方法F()调用出来.
范例二:
如果将
A c=new B();
((IA)c).F();
结果是:
IA.F()
结论是此时会从类A中接口的IA方法调用出来.
- C#中接口问题
- C#的接口问题
- c#中接口和基类的问题
- C# 中接口解析
- C#中接口的作用
- C#中接口的深入浅出
- C#中接口的深入浅出
- C#中接口的作用
- C#中接口的作用
- C#中接口的作用
- C#中接口的作用
- C#中接口的作用
- C#中接口的作用
- C#中实现接口排序
- C#中实现接口排序 .
- C#中接口的作用
- C#中接口的作用
- C#中常用接口介绍
- 使用eclipse在jsp上进行水晶报表WEB打印
- 亟待了解‘缺少对象’的原因
- DB2 数据库存储
- 临时表的存储说明及它的删除
- 海南三亚旅游吃住行攻略
- C#中接口问题
- Eclipse插件下载列表
- 如何编写AutoHotKey的脚本
- [小凤居-安全文献]隐藏进程的LKM后门
- 常用国外顶格(掘客)JAVASCRIPT
- Hibernate数据缓存
- 数据库与表格空间
- C#读取Excel2007的文件
- 安装程序在安装此软件包时遇到一个错误。错误码是2755