java、C++、C#、 Objective-c语言对比

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,

基本类型:booleanbytechardoublefloatintlongshortenum

模板:

指针:不支持

类和接口定义: 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,

基本类型:boolbytechardoublefloatintlongshortenum,signed, unsigned, union, wchar_t,nullptr, array, struct

模板: template,typename,

指针:支持(符号*, void*)

类和接口定义: abstract, new, default, public, private, protected, :::(implementsextends), 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,  

基本类型:boolbytechardoublefloatintlongshortenum,uint, ulong, ushort, struct , null,decimal,sbyte, params,

模板:

指针:支持但不建议(unsafe,fixed, stackalloc,)

类和接口定义: abstract, new, default, public, private, protected, ::: (implementsextends), 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), chardoublefloatintlongshortenum, 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.ipadiphoneipod应用

11

using namespace使用命名空间引入

类似

类似

类似

12

变量声明(需要显示声明)

类似

类似

类似

13

全局变量(放在最外层变量域最广)

类似

类似

类似

14

纯面向对象(不兼容c)

C的特性:1.可以使用指针 2.预处理3.可以使用汇编甚至机器语言4.struct/union/enum 5.自动类型转换

兼容c

部分兼容c

兼容c

15

值和引用传递:

非对象(基本类型)采用值传递

对象采用引用传递(也有说法是值传递的一种,传递的是地址值)

对象和非对象均可以值传递或者引用传递(ref, out)

对象和非对象均可以值传递或者引用传递(ref, out)

非对象采用值传递

对象采用引用传递(所有对象都是指针)

引用分为强引用和弱引用strongweak

16

继承

类:不能多继承

接口:可以多继承

java类的多继承可以通过内部类或者接口实现。

public protected private

类和接口都支持多继承

类:不支持多重继承

接口:支持多重继承

csharp类的多继承可以通过内部类、delegate或者接口实现。

类:不支持多重继承

接口:可以多重继承

类的多重继承方式可以通过id指针实现

17

自动释放内存:支持

某些库支持(需要使用者主动释放)

支持自动释放(C++方式支持手动释放)

支持手动和自动释放

18

构造和析构函数

构造函数:有

析构函数:无

构造函数:有

析构函数:有

构造函数:有

析构函数:有

构造函数:有

析构函数:有

19

缺省函数参数:不支持

支持

4.0新版支持

不支持(CC++方式支持)

20

内联函数:无(通过final关键字来进行实现)

支持

不支持

不支持(CC++方式支持)

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中的virtualabstract异同:

1.CSharp中的abstract可以修饰类和方法。

2. CSharp中的abstract修饰的类叫做抽象类,抽象类不能实例化。

abstract修饰的方法不能有实现体,相当于纯虚函数

3. CSharp中的virtualC#中用于修饰方法和属性。

支持多态(默认就是virtual)

C++ 对应关系ObjectivC

虚函数 --------普通函数

纯虚函数 ------- protocol父类抛异常迫使子类重写函数

抽象类 -------- protocol

虚基类 -------- @selector

22

重载和覆盖

运算符重载:不支持

同名函数重载:支持

运算符重载:支持

同名函数重载:支持

运算符重载:支持

同名函数重载:支持

运算符重载:不支持

同名函数重载:不支持

上面两种都可通过指针实现

23

模板:不支持

支持

不支持

不支持(通过指针实现)

24

异常处理:支持

支持

支持

支持

25

内部类:有

不支持(通过指向成员的指针实现)

支持(也可以通过delegate实现)

不支持(通过delegate或者interface实现)

26

function使用同c语言

类似

类似

类似

27

ifelse switchc语言

类似

类似

类似

28

Forwhile使用同c语言

类似

类似

类似

29

trycatch

类似

类似

类似

30

多线程

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值