java模块定义,java关键字,java实现多继承,java内部类
C++命名空间,C++关键字,C++指针和引用,C++继承,C++重载与覆盖,C++模板,C++内联函数,C++缺省参数
C#空间引入,C#关键字,C#封装继承和多态,C#接口和抽象类,C#事件和代理
Objective-c模块引入,Objective-c指针,Objective-c封装继承和多态,Objective-c协议,Objective-c Selector
1 |
java |
C++ |
C# |
Objective-c |
2 |
模块定义或引入: import, package, 基本类型:boolean,byte,char,double,float,int,long,short,enum 模板:无 指针:不支持 类和接口定义: abstract, new, default, public, private, protected, implements, extends, class, interface, 对象引用: this, super 方法定义: void,const, final, native 方法返回: return 检查类型: assert,instanceof, 条件语句: switch, case, if, else, 循环语句: continue, break, for, do, while,goto 逻辑判断: &&, !, || 逻辑值和空值: true, false, null 异常处理: try, catch, finally, throw, throws 别名:无 全局定义: 无(可由类变量实现) 静态定义: static 打印语句: 由平台实现如printfln 容器操作: [], Set, List, Map等 多线程: synchronized, volatile 其他:strictfp, transient, http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html http://www.runoob.com/java/java-intro.html 编译器相关:无
|
模块定义或引入: using, namespace, dllimport, dllexport, 基本类型:bool,byte,char,double,float,int,long,short,enum,signed, unsigned, union, wchar_t,nullptr, array, struct 模板: template,typename, 指针:支持(符号*, void*) 类和接口定义: abstract, new, default, public, private, protected, :和::(同implements和extends), class, interface, event, operator, property, sealed,struct, enum, virtual, override, friend, friend_as, gcnew, 对象引用: this, ref, out 方法定义: void,const, extern, 类型转换:const_cast, dynamic_cast,reinterpret_cast, safe_cast, static_cast 方法返回: return 检查和推断类型:sizeof, typeid, auto, decltype, 条件语句: switch, case, if, else, 循环语句: continue, break, for, do, while,goto, for each, in 逻辑判断: &&, !, || 逻辑值和空值: true, false, null 异常处理: try, catch, finally, throw,nothrow, #error, assert, static_assert, 别名:typedef 全局定义: 无(可由变量实现) 静态定义: static 打印语句: 由平台实现如printf 容器操作: [],vector,list,dequeue,iterator等 多线程: thread, volatile 可变变量:const, mutable, volatile 汇编变量:naked 其他:uuid,delegate, deprecated,initonly, , literal, noreturn,novtable, selectany, https://msdn.microsoft.com/zh-cn/library/2e6a4at9.aspx http://en.cppreference.com/w/ 编译器相关: inline,noinline, register, interior_ptr __abstract,__alignof,__asm, __assume,__based,__box, __cdecl,__declspec,__delegate, __event,__except,__fastcall, __finally,__forceinline,__gc, __hook,__identifier,__if_exists, __if_not_exists,__inline,__int16, __int32,__int64,__int8, __interface,__leave,__m128, __m128d,__m128i,__m64, __multiple_inheritance,__nogc,__noop, __pin,__property,__raise, __sealed,__single_inheritance,__stdcall, __super,__thiscall,__try __except, __try __finally, __try_cast,__unaligned,__unhook, __uuidof,__value,__virtual_inheritance, __w64,__wchar_t,
|
模块定义或引入: using, namespace, 基本类型:bool,byte,char,double,float,int,long,short,enum,uint, ulong, ushort, struct , null,decimal,sbyte, params, 模板:无 指针:支持但不建议(unsafe,fixed, stackalloc,) 类和接口定义: abstract, new, default, public, private, protected, :和:: (同implements和extends), class, interface, event, operator, sealed,struct, enum, virtual,override,object,base, delegate, internal, 对象引用: this, ref, out, as 方法定义: void,const, extern,, 类型转换: explicit, implicit, 方法返回: return 检查和推断类型:sizeof, is,typeof, checked,unchecked, 条件语句: switch, case, if, else, 循环语句: continue, break, for, do, while,goto, for each, in 逻辑判断: &&, !, || 逻辑值和空值: true, false, null 异常处理: try, catch, finally, throw, 别名:无 全局定义: 无(可由变量实现) 静态定义: static 打印语句: 由平台实现如printf 容器操作: [],Collections,Collections.Generic等 多线程: volatile,lock,synchronized 可变变量:const, volatile,readonly 上下文关键字:get, set, value, where, yield, partial 其他:Guid, ?, @ https://msdn.microsoft.com/zh-cn/library/x53a06bb(VS.80).aspx |
模块定义或引入: #import, NSnamespace, 基本类型: BOOL(int),bool(byte), char,double,float,int,long,short,enum, signed, unsigned, struct, union, nil, 模板:无 指针:支持(*,nil,Nil,NULL,NSNull), id(类对象的指针),self, SEL(指向方法的指针) 类和接口定义: new, +和-( public, private, protected,), @implementation, extends, class,@ @protocol(interface), @optional, @required, @end, id, %@,NSNull 对象引用: self(this), Super 方法定义: void,const, extern 方法返回: return 检查和推断类型:sizeof, typeof, auto 条件语句: switch, case, if, else, 循环语句: continue, break, for, do, while,goto 逻辑判断: &&, !, || 逻辑值和空值: YES(true), No(false), null 异常处理: @try, @catch, @finally, 别名: IMP(typedef) 全局定义: 无(可由类变量实现) 静态定义: static 打印语句: 由平台实现如printfln 容器操作: [], Set, List, Map等 多线程: @synchronize, volatile 可变变量:const, volatile, register, atomic,noatomic 上下文关键字: get, set, @property(readwrite/readonly, assign/retain/copy, atomic/noatomic, strong/weak), 其他: http://www.yiibai.com/objective_c/objective_c_basic_syntax.html https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html 编译器相关: @encode |
3 |
注释符号 // /*多行注释*/ /**多行注释文档*/
|
//单行注释 /*多行注释*/ |
// ///xml分级注释 /*多行注释*/
|
// ///单行注释文档 /*多行注释*/ /**多行注释文档*/
|
4 |
println("Hello world! "); |
printf("Hello world! "); |
Console.WriteLine("Hello world!") |
NSLog(@"Hello world!<br>"); |
|
常量定义final,static public interface SystemConstants { public final static int TIMEOUT = 300; }
public final classSystemConstants { public final static int TIMEOUT = 300; } |
同java除了使用类和接口定义常量外, 可以使用#define, extern(C语言方式) |
同java可以用static,const, readonly修饰 |
同java除了使用类和接口定义常量外,还有c用法:extern
|
5 |
Sun公司(被Oracle收购)出品 |
AT&T贝尔实验室出品 |
微软出品 |
Apple公司出品 |
6 |
工程文件名称 .java, .class, .jar, .dex等 |
.h, .cpp, .c, .res, .pch, .pdb, .ilk, .obj, .dll, .exe等 |
.cs, .asax, .ascx, .aspx, .config, .resx, .dll, .exe等 |
.h, .cc, .a, .mm, .m, .xib, .pch, .ipa, .dylib, .app等 |
7 |
运行环境: win32, win64,linux等 JDK(JRE)支持 |
win32, win64, linux等 C++ framework支持 |
Windows操作系统,WP手机 C# framework支持 |
苹果电脑操作系统,iphone系列 Xcode framework支持 |
8 |
解释编译器类型 解释和编译 |
预编译、编译 |
预编译(可选,默认无)、编译 |
预编译、编译 |
9 |
代码执行效率和使用开发效率 代码执行效率:特殊情况下不高 使用开发效率:高(官方库多) |
代码执行效率:高(与开发人员的掌握程度相关联性高) 使用开发效率:不高(需要使用第三方库,官方库在逐渐扩展),具体需要对应用背景分析,不是一概而论 |
代码执行效率:类似于java(低于C++) 使用开发效率:高(官方提供库) |
代码执行效率:高 使用开发效率:较高(官方库多) |
10 |
应用场景 适合范围: 1.网页开发 2.android开发 |
适合范围: 1.算法开发 2.游戏开发2.操作系统 |
适合范围: 1.winform开发(ERP系统) 2.windowsphone手机开发 |
适合范围: 1.算法、操作系统、游戏 2.ipad、iphone、ipod应用 |
11 |
using namespace使用命名空间引入 |
类似 |
类似 |
类似 |
12 |
变量声明(需要显示声明) |
类似 |
类似 |
类似 |
13 |
全局变量(放在最外层变量域最广) |
类似 |
类似 |
类似 |
14 |
纯面向对象(不兼容c) 附C的特性:1.可以使用指针 2.预处理3.可以使用汇编甚至机器语言4.struct/union/enum 5.自动类型转换 |
兼容c |
部分兼容c |
兼容c |
15 |
值和引用传递: 非对象(基本类型)采用值传递 对象采用引用传递(也有说法是值传递的一种,传递的是地址值) |
对象和非对象均可以值传递或者引用传递(ref, out) |
对象和非对象均可以值传递或者引用传递(ref, out) |
非对象采用值传递 对象采用引用传递(所有对象都是指针) 引用分为强引用和弱引用strong和weak |
16 |
继承 类:不能多继承 接口:可以多继承 java类的多继承可以通过内部类或者接口实现。 public protected private |
类和接口都支持多继承 |
类:不支持多重继承 接口:支持多重继承 csharp类的多继承可以通过内部类、delegate或者接口实现。 |
类:不支持多重继承 接口:可以多重继承 类的多重继承方式可以通过id指针实现 |
17 |
自动释放内存:支持 |
某些库支持(需要使用者主动释放) |
支持自动释放(C++方式支持手动释放) |
支持手动和自动释放 |
18 |
构造和析构函数 构造函数:有 析构函数:无 |
构造函数:有 析构函数:有 |
构造函数:有 析构函数:有 |
构造函数:有 析构函数:有 |
19 |
缺省函数参数:不支持 |
支持 |
4.0新版支持 |
不支持(C、C++方式支持) |
20 |
内联函数:无(通过final关键字来进行实现) |
支持 |
不支持 |
不支持(C、C++方式支持) |
21 |
多态:支持多态(默认就是virtual) C++ 对应关系Java 虚函数 --------普通函数 纯虚函数 --------抽象函数 抽象类 --------抽象类 虚基类 --------接口
C++中的父虚子非虚 ----- Java中接口+内部变量 C++中的父非虚子虚 ----- Java中接口+内部变量
1.父类的实例变量和类变量能被子类的同名变量隐藏。 2.父类的静态方法被子类的同名静态方法隐藏,父类的实例方法被子类的同名实例方法覆盖。 3.不能用子类的静态方法隐藏父类的实例方法,也不能用子类的实例方法覆盖父类的静态方法,否则编译器会异常。 4.用final关键字修饰的最终方法不能被覆盖。 5.变量只能被隐藏不会被覆盖,子类的实例变量可以隐藏父类的类变量,子类的类变量也可以隐藏父类的实例变量。) |
支持(需要virtual关键字,否则就是覆盖) 1 覆盖(override) 特点:(1)父类的成员函数是虚拟函数,即在成员函数前加上virtual关键字 (2)子类的同名成员函数和父类的完全相同,即参数和返回值类型完全一样 2. 隐藏 隐藏是子类中的同名函数将父类中隐藏 特点:(1)父类和子类有同名函数 2)同名函数不一样(参数不一样或者返回类型不一样) 3 虚拟继承 虚拟继承:C++使用虚拟继承(Virtual Inheritance),解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。 |
支持(需要virtual关键字,否则就是覆盖) C++ 对应关系CSharp 虚函数 --------虚函数 普通函数 --------普通函数 纯虚函数 --------抽象函数 抽象类 --------抽象类 虚基类 --------接口 虚函数、纯虚函数、抽象类、虚基类比较: 1.虚函数:函数声明为virtual,由基类指针指向派生类调用派生类方法 2.纯虚函数:virtual并且=0,子类必须实现该方法 3.抽象类:abstract修饰的类或类中的接口,抽象类不能实例化对象 4.虚基类:具有发生在继承中有公共基类的多个实例仅仅保存唯一实例的特性 C++和CSharp中的virtual、abstract异同: 1.CSharp中的abstract可以修饰类和方法。 2. CSharp中的abstract修饰的类叫做抽象类,抽象类不能实例化。 abstract修饰的方法不能有实现体,相当于纯虚函数 3. CSharp中的virtual在C#中用于修饰方法和属性。 |
支持多态(默认就是virtual) C++ 对应关系ObjectivC 虚函数 --------普通函数 纯虚函数 ------- protocol或父类抛异常迫使子类重写函数 抽象类 -------- protocol 虚基类 -------- @selector |
22 |
重载和覆盖 运算符重载:不支持 同名函数重载:支持 |
运算符重载:支持 同名函数重载:支持 |
运算符重载:支持 同名函数重载:支持 |
运算符重载:不支持 同名函数重载:不支持 上面两种都可通过指针实现 |
23 |
模板:不支持 |
支持 |
不支持 |
不支持(通过指针实现) |
24 |
异常处理:支持 |
支持 |
支持 |
支持 |
25 |
内部类:有 |
不支持(通过指向成员的指针实现) |
支持(也可以通过delegate实现) |
不支持(通过delegate或者interface实现) |
26 |
function使用同c语言 |
类似 |
类似 |
类似 |
27 |
ifelse switch同c语言 |
类似 |
类似 |
类似 |
28 |
Forwhile使用同c语言 |
类似 |
类似 |
类似 |
29 |
trycatch |
类似 |
类似 |
类似 |
30 |
多线程 |
|
|
|