C#和Java接口对比
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);
}
}
C#和Java接口对比的更多相关文章
- 对接第三方平台JAVA接口问题推送和解决
前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...
- C++ Concept 和Java 接口
C++ Concept 和Java 接口 Concept及接口 我会用Java写个case来解释什么是C++的Concept.Concept可以理解为接口,它是一种广义的接口.不同于Java的Inte ...
- C#和Java的对比
C#和Java的对比 C#是微软公司在2000年6月发布的一种面向对象的高级程序设计语言:Java是Sun公司在1996年1月发布的一种面向对象的.平台独立的高级程序设计语言.它们是现在最流行的面向对 ...
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- java 接口的作用和好处
1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...
- java接口
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- java接口的嵌套
java接口 1.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值 2.接口中的方法默认都是 public abstract ...
- java 接口和抽象类的区别
java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...
- java 接口(上)
1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
随机推荐
- QTimeLine 控制动画(一步一步的往前变化,并在每次变化时都会发出一个frameChanged信号)
QTimeLine顾名思义表示一条时间线,即一个时间序列,该时间序列会按我们实现定义好的间隔一步一步的往前变化,并在每次变化时都会发出一个frameChanged()信号.所以,我们通常会使用该类来驱 ...
- caffe自定义layer
caffe自带layers: http://caffe.berkeleyvision.org/tutorial/layers.html Layers: Image Data - read raw im ...
- SSDT表概念具体解释
SSDT 的全称是 System Services Descriptor Table,系统服务描写叙述符表. 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系 ...
- Spring-Spring IoC容器
IoC容器 Spring容器是Spring框架的核心.容器将创建对象,把它们连接在一起,配置它们,并管理它们的整个生命周期从创建到销毁.Spring容器使用依赖注入(DI)来管理组成一个应用程序的组件 ...
- linux一路填坑...
1.安装ubuntu 从ubuntu9.0开始,一路更新,越来越垃圾,更可恶的是工作上经常指定特定的版本,于是乎,我电脑里装了n个版本的ubuntu. Win7 + Ubuntu 15.10 1)装完 ...
- Flash本地共享对象 SharedObject
以下内容是对网上一些资料的总结 Flex SharedObject 介绍(转自http://www.eb163.com/club/thread-3235-1-1.html): Flash的本地共享对象 ...
- c# 图片加密解密的实例代码
c# 图片加密解密的实例代码. 代码: using System; using System.Collections.Generic; using System.Text; using System. ...
- Delphi 正则表达式语法(7): 匹配转义字符
Delphi 正则表达式语法(7): 匹配转义字符 // ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办 var reg: TPerlRegEx; begin reg := TPe ...
- 转:[NHibernate]视图处理
转自:http://www.cnblogs.com/wolf-sun/p/4082899.html 目录 写在前面 文档与系列文章 视图 一个例子 总结 写在前面 前面的文章主要讲了对物理数据表的操作 ...
- springmvc 需要用到的核心jar包
aopbeanscontextcoreexpressionwebwebmvc