接口声明:
interface 标识符 接口体
interface 标识符 :上层接口 接口体
上层接口
标识符
标识符 , 上层接口
接口体:
{ 多个声明定义 }
接口(Interface)描述的是继承自某个接口的类所必须实现的一系列函数。一个接口的实现类可以被转换成对该接口的引用。接口相当于操作系统对象,如 Win32 的COM/OLE/ActiveX,所显露的接口。
接口不能由类派生,只能派生自其它接口。类不能多次从一个接口派生。
interface D
{
void foo();
}
class A : D, D // 错误,多重接口
{}
不允许创建接口的实例。
interface D
{
void foo();
}
...
D d = new D(); // 错误,不能创建接口的实例
接口成员函数不能有实现。
interface D
{
void bar() { } // 错误,不允许实现
}
继承接口的类必须实现接口中的所有函数:
interface D
{
void foo();
}
class A : D
{
void foo() { } // 正确,提供了实现
}
class B : D
{
int foo() { } // 错误,没有提供 void foo() 实现
}
接口可以被继承,其中的函数可以被重写:
interface D
{
int foo();
}
class A : D
{
int foo() { return 1; }
}
class B : A
{
int foo() { return 2; }
}
...
B b = new B();
b.foo(); // 返回 2
D d = cast(D) b; // 正确,因为 B 继承了 A 的 D 实现
d.foo(); // 返回 2;
接口可以在派生类中重新实现:
interface D
{
int foo();
}
class A : D
{
int foo() { return 1; }
}
class B : A, D
{
int foo() { return 2; }
}
...
B b = new B();
b.foo(); // 返回 2
D d = cast(D) b;
d.foo(); // 返回 2
A a = cast(A) b;
D d2 = cast(D) a;
d2.foo(); // 返回 2,尽管它是 A 的 D,不是 B 的 D
如果类要重新实现接口,必须重新实现接口的所有函数,不能从父类中继承:
interface D
{
int foo();
}
class A : D
{
int foo() { return 1; }
}
class B : A, D
{
} // 错误,接口 D 没有 foo()
2.014
Const and Invariant Interfaces
If an interface has const or invariant storage class, then all members of the interface are const or invariant. This storage class is not inherited.
13.1 COM 接口
接口的一个变体是 COM 接口。按照设计,COM 接口被为直接映射到 Windows COM 对
象。任何 COM 对象都由一个 COM 接口表示,任何带有 COM 接口的 D 对象都可以被外
部 COM 客户端使用。
按定义,COM 接口从 std.c.windows.com.IUnknown 接口派生。
COM 接口与普通 D接口的不同之处在于:
• 它从 std.c.windows.com.IUnknown 接口派生。
• 它不能成为 Delete表达式 的参数。
• 引用不能向上转型为封闭的类对象,也不能向下转型为从它派生的接口。为了达到这
个目的,必须按照标准的 COM 风格为接口实现一个合适的 QueryInterface()
方法。
。。。。。。。。。。。。。。
分享到:
相关推荐
- 参数Pn50A和Pn50B的设置用于处理N.OTP.OT跳跃闪烁的问题,其中Pn50A的初始值2100通常改为8100,如果有特定需求,如不接外部S-ON开关或需要分频改变转速,则相应调整。 - 控制方式参数Pn000初始值需从0000改为0010...
2. 拼花木地板应符合设计尺寸,同时要有合格证。 3. 毛地板、木搁栅和垫木需要做防腐处理,并满足设计尺寸要求。 4. 硬木踢脚板的尺寸、含水率、背面防腐处理以及颜色和面层地板的匹配度都需要考虑。 5. 其他辅助...
2. **PPTC保险丝**:选用SMD014用于前后级隔离和电流保护。 3. **瞬态电压抑制器(TVS)**:选用BWLC05C、P0080SB或SMBJ5.0CA作为二级保护。 4. **雷击测试标准**:同样满足10/1000μs、4Kv雷击测试,符合IEC6100-4-5...
2. **作业条件** - 墙体和顶面抹灰完成,门框安装完毕,已弹出+50cm水平标高线。 - 屋面防水、穿楼面管线已完成,管洞堵塞密实。 - 预埋在地面内的电管完成,暖卫管道试水、打压合格。 - 房间四周弹出踢脚板上口...
2. 压力控制:包括总压、射出一次压力、二次压力、关模低压和背压。总压用于关模,低压用于保护模具,一次压和二次压则关乎成品的质量,背压则影响螺杆加料的均匀性。 3. 时间控制:射出时间、冷却时间、低压时间和...
2. 工作电压范围:该微控制器支持从1.6伏到5.5伏的宽范围工作电压,并且仅需单一电源供电。 3. 存储容量:内置16到48千字节的Flash存储器,以及2或3千字节的RAM。 4. 处理性能:在24兆赫兹的最高工作频率下,16位...
0.014 Lux @(F1.4,AGC ON);0 Lux with IR + 快门:1/3秒至1/100,000秒 + 镜头:2.8-12mm @ F1.4,水平视场角:74.6°~26.8° + 镜头接口类型:Φ14 自动光圈 DC 驱动 + 日夜转换模式:ICR红外滤片式 + 宽动态...
2. **操作工艺** - **工艺流程**:首先,按照楼层标高弹出顶棚水平线,然后划分龙骨分档线。接着,安装主龙骨吊杆,主龙骨,次龙骨。在主龙骨上安装罩面板,涂刷防锈漆,最后安装压条。 - **具体步骤**: - ...
3、请确保电视不是待机,然后关闭电源,插上U盘(建议插最上面主口); 4、长按电视机背后的 确定/待机 按键,通电,等30-60秒,屏幕出现2个齿轮相互转动即可; 如长按 确定/待机 按键,没有出现2个齿轮相互转动的...
o029_snow.zip 一个雪花飘落例子(3KB) 626,o028_zoomsys.zip 类似画图放大镜的东西(2KB) 627,o027_wiz2.zip 制作应用程序向导的例子(类似安装程序的界面)!(5KB) 628,o025_StopWatch.zip “跑表...
2. 故障代码E011指出[A1级]主微机检测到变频微机故障。这可能是软件或硬件方面的问题,比如变频微机在双口RAM中的正常标志超过80毫秒没有变化。检查时需排除变频器侧故障,并确认变频微机工作指示灯处于绿灯亮状态。...
2. **发动机支承梁减振衬套**:这两个部件(11610-75F00和11710-75F00)是发动机固定于车身的关键零件,其作用是吸收发动机工作时产生的振动,保持车辆稳定性。价格均为18.70元。 3. **后止动器托架**:11921-75F20...
2. **远程办公**:支持远程接入私有云存储,便于员工在家或其他地点工作时访问公司资源。 3. **会议室**:提供高速稳定的无线网络,满足会议期间视频会议、资料共享等需求。 4. **多设备管理**:适合需要连接多个...
2. **工程进度方案**: - 工程时间跨度从3月到2009年12月31日,需确保按质按量按时完成。 - 提供了施工进度方案,遵循投标文件和合同要求。 3. **材料采购与管理**: - 所有钢材、焊接材料等必须符合图纸及国家/...
- 色散值: 0.014。 - **用途**: 作为宝石级别的合成材料。 #### 十三、钇铝榴石 - **化学成分**: 钇、铝氧化物。 - **物理性质**: - RI: 1.83。 - H: 8。 - SG: 4.57。 - 色散值: 0.028。 - **应用**: 人造...
i012.zip 如何在vb中调用i/o口的例子(10KB) 122,i011.zip 演示连接/断开network(3KB) 123,i010.zip chat程序例子(12KB) 124,i009.zip 简单的邮件发送例子 (13KB) 125,i008.zip 启动一个...