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.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
随机推荐
- 9.Query on Embedded/Nested Documents-官方文档摘录
1.插入案例 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: & ...
- java.lang.instrument: 一个Java对象占用多少字节?
一.对象头包括两部分信息:Mark Word(标记字段)和 Klass Pointer(类型指针) 1. Mark Word 用于存储对象自身的运行时数据,如哈希码(HashCode).GC分代年 ...
- TouchDelegate
TouchDelegate(Rect bounds, View delegateView) Parameters: bounds Bounds in local coordinates of the ...
- sql 使用select 生成json
) FROM ( SELECT ( '{"organizationTitle":"' + [Name] + '"' ,',"orgainization ...
- spawn 和 exec 的区别(转载)
众所周知,Node.js在child_process模块中提供了spawn和exec这两个方法,用来开启子进程执行指定程序.这两个方法虽然目的一样,但是既然Node.js为我们提供了两个方法,那它们之 ...
- React:快速上手(1)——基础知识
React:快速上手(1)——基础知识 React(有时叫React.js或ReactJS)是一个为数据提供渲染为HTML视图的开源JavaScript库,用于构建用户界面. JSX.元素及渲染 1. ...
- 2016年国内开源maven镜像站点汇总
本文系转载,原文链接:https://www.cnblogs.com/xunianchong/p/5684042.html 一.站点版 (一).企业站 1.网易:http://mirrors.163. ...
- PL/SQL编程—视图
create or replace view test_view as select TestA.id, TestB.idno, TestB.name, TestB.sex from TestB le ...
- unity, 在编辑界面中隐藏公开变量
unity默认声明为public的变量都是在编辑界面可见的,如果要隐藏的话就可以这样做 一种是使用属性 Public float Age { get; set; } 另一种是使用标签 [HideInI ...
- Javascript中call()和apply()的用法 ----2
前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.call 和 apply二者的作用完全一样,只是接受 ...