单一继承:
Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
动态:
Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。 而Smalltalk学派更灵活,比如一些Smalltalk 看来无误的程序拿到Simualr 67那里就无法通过。
从很多方面来看,C++和Objective-C的差别,与其说时技术上的, 不如说是思维方式上的。你是否想更安全而舍弃灵活性?Simular67学派的支持者声称既然程序设计出色何必再要灵活性,而 Smalltalk学派则辩称为了灵活可以容忍运行时多出错。
Objective-C简明教程
前言
◆开始学习前,假设你已经具备了一些C语言的基础知识,包括变量类型、函数、返回值、以及指针的相关概念。如果对这些还不了解,建议首先学习谭浩强的《C程序设计》。
◆Objective-C,是 C 的衍生体,继承了所有 C 语言的特性。是有一些例外,但是它们不是继承于 C 的语言特性本身。
◆nil:在 C/C++ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL 如法炮制。objectivec
◆BOOL:C 没有正式的布尔类型,而在 Objective-C 中也不是「真的」有。它是包含在 Foundation classes(基本类别库)中(即 import NSObject.h;nil 也是包括在这个标头档内)。BOOL 在 Objective-C 中有两种型态:YES 或 NO,而不是 TRUE 或 FALSE。
◆#import vs #include:就如同你在 hello world 范例中看到的,我们使用了 #import。#import 由 gcc 编译器支援。我并不建议使用 #include,#import 基本上跟 .h 档头尾的 #ifndef #define #endif 相同。许多程式员们都同意,使用这些东西这是十分愚蠢的。无论如何,使用 #import 就对了。这样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会有足够的 Objective-C 程式员可以坚持保留它或是将它放回来。偷偷告诉你,Apple 在它们官方的程式码中也使用了 #import。所以万一有一天这种事真的发生,不难预料 Apple 将会提供一个支援 #import 的 gcc 分支版本。
◆ Objective-C 中, method 及 message 这两个字是可以互换的。不过 messages 拥有特别的特性,具体区别在後面介绍。
编译 hello world
- hello.m
- #import
- int main( int argc, const char *argv[] ) {
- printf( "hello world\n" );
- return 0;
- }
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21796-2.html
好好读一读刘亚洲的文章就知道了
有人好办事啊
我们的海军和先进武器在哪