- 博主:易飞扬
- 原文链接 : http://www.yifeiyang.net/iphone-development-introduction-7-from-the-c-c-language-to-objective-c-language/
- 转载请保留上面文字。
-
iPhone开发入门(7)--- 从C/C++语言到Objective-C语言
Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。所以有一定C/C++语言基础理解和掌握Objective-C也会相应的快些。这回,我们将比较着学习Objective-C语言,掌握其语法并理解其思想。
语法
让我们先来看看C++和Objective-C中对于类的宣言 :
-
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#include "BaseClass.h" class MyClass : public BaseClass { public: MyClass(); virtual ~MyClass(); virtual int GetValue() const; virtual void SetValue(int inValue); bool IsValid() const; static MyClass* GetInstance(); private: int mValue; static MyClass* sInstance; };
-
Objective-C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#import "BaseClass.h" @interface MyClass : BaseClass { int mValue; } - (int) getValue; - (void) setValue: (int) inValue; - (BOOL) isValid; + (MyClass*) getInstance; @end
通过比较上面两段代码,从语法的角度上我们看到 Objective-C 语言有以下特点:
- 用 #import 取代了 #include
#import 相当于 C/C++ 语言中的 #include+#pragma once。当头文件嵌套包含的时候,它的作用就发挥出来了。 当某一头文件已经被读取后,又一次被 #include 的时候,#pragma once 这会跳过该次读取。 比如我们在C/C++语言的头文件中常常这样定义,就是为了实现 #pragma once 而做的 :
1 2 3
#ifndef INCLUDED_BASECLASS_H #include "BaseClass.h" #endif
- 继承的时候没有限定符
继承都是 public 的。
- 没有构建和虚构函数
- 成员变量/函数没有限定符
成员变量缺省是 private 的,而函数是 public 的。
- 没有const关键字
- 没有virtual关键字
Objective-C 中函数缺省的就是 virtual 的。
接下来再看看具体的实现 :
-
C++