C#和Java接口对比
2024-08-31 07:41:33
C#和java的接口有很多类似之处,对于编程约束和设计模式的实现有重要作用。这里记录几个知识点。
1. C#的接口中不能有字段,但Java的接口中允许有static final修饰的字段/域(field)。
2. Java的接口中一般包含方法签名和上述的static final修饰的域(Java的类成员一般包括构造函数,析构函数,普通方法,域)。C#的接口中可以包含方法签名,属性,事件,索引等,实际上,C#中的这些类成员在编译成IL时都会进行处理转为方法。
3. 接口中的方法签名都不能是静态的。
4. 语法形式上,接口中的方法都是公共的,Java的接口中的方法签名可以显示声明public或者不声明,C#接口中的方法签名不允许显示声明public。
5. 实现上,接口都是一种行为约束,表示类具有某种能力。共同点是,都可以在实现接口的类中,用public实现(而且是必需实现)接口中所有的方法签名。不同的是,C#接口独有的显示实现。C#的类中对接口的显示实现注意一下几点:1)显示实现时方法不用public修饰(但默认为public)。2)显示声明的方法只能由接口调用,类及其实例不能调用。3)类实现某一接口时,可以只一般实现接口成员(public),显示实现接口成员(只能通过接口调用),也可以同时一般实现和显式实现共存(共存时规则不变,一般实现可以由接口或者类变量调用,显式实现只能由接口的变量调用)。
interface IInterface
{
string AProperty { get; set; }
} class TestClass:IInterface
{
public string AProperty { get; set; }
string IInterface.AProperty { get; set; }
} class Program
{
static void Main(string[] args)
{
TestInterface();
Console.ReadKey();
} private static void TestInterface()
{
IInterface aInterface = new TestClass();
TestClass aClass = new TestClass();
aInterface.AProperty = "aaaaaaaaaa";
aClass.AProperty = "bbbbbbbbbb";
Console.WriteLine(aInterface.AProperty);
Console.WriteLine(aClass.AProperty);
}
}
最新文章
- 镁光c400-MTFDDAK064M固态硬盘更新固件
- javaweb中实现在线人数统计
- js常用函数、书写可读性的js、js变量声明...
- Windows 下整理内存工具推荐——cleanmem
- SectionIndexer中的getSectionForPosition()与getPositionForSection()
- 编译内核出错:invalid option `abi=aapcs-linux' 解决办法
- 如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
- Silverlight的Socket通信
- C++中L和_T()之区别
- 翻译:如何使用CSS实现多行文本的省略号显示
- python加载sqlite3报错:No module named _sqlite3
- win10 uwp 圆角按钮
- 【机器学习】--Python机器学习库之Numpy
- 引擎设计跟踪 地形LOD的改进
- Spring的标签和验证等模块
- 《Linux内核分析》第三周:Linux系统启动过程
- 《跟老男孩学Linux运维:Web集群实战》读书笔记
- [uart]linux uart应用层配置
- BASIC-24_蓝桥杯_龟兔赛跑预测
- OAuth 2.0 学习