Objective-Cとは
プログラミング言語の一種です。以下のような特徴を持ちます。
- オブジェクト指向言語です。
- C言語の拡張という意味ではC++と同じですが、拡張部分はC言語と全く異なります。Smalltalk由来の
[obj message]
といった文法になります。 - C++と異なり、多重継承を認めません。その代わりに、プロトコルという仕組みがあります。プロトコルはJavaのinterfaceと同じです。
超マイナーな言語から世界中で使われる言語に
自分がObjective-Cを知ったのは、もちろんNEXTSTEPですが、 当時は超マイナー言語でした。C++も学んだのですが、 C++がどうも好きになれない1ので、 なんでこんないい言語が2評価されないのかなぁとモヤモヤしてました。
でも、AppleによるNeXTの買収(NeXTによるAppleの乗っ取り)
によってMac OS Xの開発言語として復活し、
iPhoneのヒットによって、世界中で使われるメジャーな言語になりました。
Javaにも影響を与えた
Objective-Cの直系の子孫はAppleが開発したSwiftですが、傍系の子孫とも言えるのが、Javaです。 JavaとObjective-Cは似ているところもあれば似てないところもありますが、C++よりは似ていると思います。
- 似ている箇所
- 多重継承を許さず、インターフェースによる継承
- Objective-Cではプロトコル、Javaではインターフェースを使用
- C++では多重継承が可能です。
- ルートクラスの存在
- Objective-CではNSObject、JavaではObject
- C++ではルートクラスが存在しません。
- 多重継承を許さず、インターフェースによる継承
- 似ていない箇所