社区
C#
帖子详情
关于接口
13003517962
2003-10-18 08:29:24
我是初学,对接口理解不深,
1.接口有什么用呢?
2.接口是实现多重继承,那么他怎么实现的哪?
...全文
59
13
打赏
收藏
关于接口
我是初学,对接口理解不深, 1.接口有什么用呢? 2.接口是实现多重继承,那么他怎么实现的哪?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jhfmail
2003-10-29
打赏
举报
回复
补充说明:接口只是声名了这个一个方法,属性,事件,索指等,没有真正的实现,你必须到类里再去实现
jhfmail
2003-10-29
打赏
举报
回复
接口的主要作和在于可以实现多重继承,
比如说你要写一个类1,这个类要包括类2,也要包括类3,由于C#不支持类之间多重继承,所以你的类1 不能直接继承类2,类3,所以你可以写一个接口类,继承类2,类3,然后再写一个类继承一个接口就可以了
aspcn
2003-10-19
打赏
举报
回复
如果你看一下设计模式,你就知道为什么要用接口了。
13003517962
2003-10-18
打赏
举报
回复
to 91bct:
您 说的是接口的多重继承,不是类的多重继承,
我想问的是如何通过接口实现类的多重继承(好象书上这么说的)
to mittermeyer:
我的c++不懂,你是不是想说,由于接口的出现,即使同一个方法被执行也有不同结果,
是吗
Mittermeyer
2003-10-18
打赏
举报
回复
接口就是一个全部成为位纯虚函数组成的虚类,用来实现多态。
在Interop导出的时候,对应COM中的Interface。
91bct
2003-10-18
打赏
举报
回复
多重继承:
interface IControl
{
void Paint();
}
interface ITextBox:IControl
{
void SetText(string text);
}
interface IListBox:IControl
{
void SetItems(string[] items);
}
interface IComboBox:ITextBox,IListBox {}
注意:被继承的接口必须是能访问得到的。
Kain
2003-10-18
打赏
举报
回复
个人理解
继承是纵向的
接口是横向的
不知对不对
13003517962
2003-10-18
打赏
举报
回复
是不是这样啊
一个类如果继承并实现了这个接口,当有一个方法要这个接口时就直接给实现接口的类的实例
(这象是类的转换),
但我想知他如何实现多重继承呢?
Sample中的两个方法是通过创建实例来实现的,不是通过类继承来实现的啊.
我想如果是继承,就是通过类的继承,不用通过实例来得到方法,
你说呢?我不太懂,见笑
ivt
2003-10-18
打赏
举报
回复
楼上的接口例子举的好呀
因为类只能从继承另一个类,
但如果应用接口的话就可以
实现从多个类中继承了。
是不是这样呀,我也不太清楚
这些概念。
91bct
2003-10-18
打赏
举报
回复
如下例子:
using System;
public interface IJob
{
decimal CalcSalary(); // 计算工资
}
public interface ITax
{
decimal CalcTax(); // 计算个人所得税
}
// 类Employee实现了IJob和ITax两个接口
public class Employee: IJob,ITax
{
protected string m_EmpID=""; // 员工编号
protected decimal m_BaseSalary=0.0m; // 员工工资
// 构造函数
public Employee(string EmpID,decimal BaseSalary)
{
m_EmpID=EmpID;
m_BaseSalary=BaseSalary;
}
public virtual decimal CalcSalary()
{
return m_BaseSalary;
}
public virtual decimal CalcTax()
{
if (m_BaseSalary>800.0m)
return (m_BaseSalary-800.0m)*0.14m;
else
return 0.0m;
}
public void SetEmpID(string EmpID)
{
m_EmpID=EmpID;
}
public string GetEmpID()
{
return m_EmpID;
}
}
public class Sales: Employee // 类Sales从Empolyee派生
{
protected decimal m_Bonus; // 奖金
// 构造函数
public Sales(string EmpID,decimal BaseSalary,decimal Bonus):base(EmpID,BaseSalary)
{
m_Bonus=Bonus;
}
// 改写虚方法CalcSalary()
public override decimal CalcSalary()
{
return base.m_BaseSalary+m_Bonus;
}
// 改写虚方法CalcTax()
public override decimal CalcTax()
{
if (base.m_BaseSalary+m_Bonus>800.0m)
return (base.m_BaseSalary+m_Bonus-800.0m)*0.14m;
else
return 0.0m;
}
public decimal GetBonus()
{
return m_Bonus;
}
}
public class Sample
{
public static void DisplaySalary(IJob e)
{
Console.WriteLine("员工工资={0}元",e.CalcSalary());
}
public static void DisplayTax(ITax e)
{
Console.WriteLine("所 得 税={0}元",e.CalcTax());
}
public static void Main()
{
Employee e=new Employee("100001",6000.0m);
Console.WriteLine("员工编号={0}",e.GetEmpID());
DisplaySalary(e);
DisplayTax(e);
Console.WriteLine();
Sales s=new Sales("100002",6000.0m,1200.0m);
Console.WriteLine("员工编号={0}",s.GetEmpID());
DisplaySalary(s);
Console.WriteLine("奖 金={0}",s.GetBonus());
DisplayTax(s);
}
}
91bct
2003-10-18
打赏
举报
回复
接口定义不包括成员的实现,它是通过类或者结构来实现。
PhilexPei
2003-10-18
打赏
举报
回复
to 91bct(路人)
你的interface IComboBox:ITextBox,IListBox {}中
是否IComboBox包涵了两个IControl接口呢
Mittermeyer
2003-10-18
打赏
举报
回复
接口不是那个语言特有的东西,应该是一种机制,接口是用来展现对象的行为的。把行为和实现分离。
多态也一样,使OO的一个基本概念,不同的派生类继承同一个接口,分别重载实现接口函数,这就是多态的形式。
你把interface看作virtual class就行了,我认为本质上是没有区别的。
微信企业号
接口
开发源码
微信企业号
接口
开发源码,WeiXinEnterprises 应用用于学习和交流企业号
接口
开发,其中如果有什么不对...进行留言和讨论,更多关于微信开发的源码及
接口
详解,可加 感谢您的下载使用,谢谢!祝您学习进步!Engineer-Jsp
JAVA_API1.6文档(中文)
java.lang.reflect 提供类和
接口
,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java....
HCIE H12-266 考试备考指南
网络设备的
接口
类型包含以太
接口
,帧中继
接口
,串行
接口
,POS
接口
。 在Internet网络,运行的网络协议包括ISIS、OSPF、LDPMP-BGP、Multicast,运行IPV4和IPV6双栈。在企业网络里,设计了交换网络,FR网络,用于备份...
json jar包
关于http
接口
开发中json格式数据编码问题处理 在实际工作中,
接口
很多时候返回json格式,但有时返回的格式会有编码问题 假设如下
接口
:http://service.test.com/interface/getData_test.jsp 返回如下是正常的。 ...
题目:以下关于
接口
和类的描述,哪些是正确的()
以下关于
接口
和类的描述,哪些是正确的() A、
接口
中可定义变量,并且变量的值不能修改 B、任何情况下,类都不能被private修饰 C、类可以被protected修饰 D、
接口
不能实例化 答案:A、C、D 解释: A:
接口
中可以...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章