【java】【objective-c】Java vs Objective-C 言語比較
公開日:
:
java, objective-c
Java人間がObjective-Cを勉強するにあたって一番苦労するのは文法に関するネーミングの違いだと思います。
概念は理解済みなのにそれがどの部分に相当するのか分からないのです。
「○○って何?」
「Javaでゆうと△△だよ!」
ってなると話が早いのですが、どちらの言語も知っている人でないとなかなかこういう答えは返ってきません。
てことで2言語間の対応をとっていきたいと思います。
言語が違うので概念が完全一致することはありえないのかも知れませんが、そこはまあ、おおよその雰囲気でおっけーな感じで。
【objc】@interface => 【java】class
ObjCではヘッダと実装にファイルを分けて書きます。
Java的にはクラスなのにinterfaceかよ!ですが、Javaの専門用語的なインターフェースではなく、普通名詞的にクラスのインターフェース。
この文法で実現する概念的にはどちらも「クラス」。
【Objective-C】
@interface @end @implementation @end
【Java】
class{ }
【objc】@protocol => 【java】interface
次項参照
【objc】デリゲート => 【java】リスナー
デリゲートは委譲と訳されますが、クラス設計的な「継承」と「委譲」の委譲ではなく、実装は使う側におまかせということで委譲。
objcはprotocol、javaはintefaceで実装する。
宣言部
【objc】
@protocol MyDelegate<NSObject> -(void)myDelMethod:(NSString*)text; @end
【java】
interface MyListener { public void onSomeClicked(); }
イベント起こす側
【objc】
//ヘッダ.h @protocol @interface //デリゲート登録用 @property (retain) id<MyDelegate> myDelegate; @end //実装.m -(void) hoge { //イベント発動 [self.myDelegate myDelMethod:text]; }
【java】
class ClassA { //リスナ登録用 private MyListener listener; public setOnMyListener(MyListener listener) { this.listener = listener; } private someMethod() { //イベント発動 listener.onSomeClicked(); } }
利用部
【objc】
//ヘッダ.h @interface ClassB : UIViewController<MyDelegate>{ //・・・ } //実装.m -(void) init { //デリゲートの登録 delegate元インスタンス.myDelegate = self; } //デリゲートの実装 -(void)myDelMethod:(NSString*)text{ //処理 }
【java】
class ClassB implements MyListener { ... public ClassB() { //リスナの登録 someObj.setOnMyListener(this); } //リスナの実装 @Override public void onSomeClicked() { //処理 }
関連記事
-
【java】Calendar : 日付や時間を扱う
Locale locale = Locale.getDefault(); Calendar c
-
【java】 リフレクションの使い方
instanceメンバ ・メソッド import java.lang.reflect.F
-
【objective-c】エラーメッセージとその実態
java人間にとってxcodeのコンソールが吐くログはナニヲイッテルノカワカラン。 なので、こんな
-
【objective-c】正規表現
NSString* targetStr = @"19801231&qu
-
【java】正規表現
基本的な使い方 //●コンストラクタ String regExp = "[^0
-
【objective-c】デリゲート[delegate]を実装する
デリゲートは「委譲」と訳され、クラスAで起きたイベントの処理をクラスBで実装する仕組みです。
-
【java】可変長引数 String… args
javaのメソッドで引数の型の後ろにドット「.」を3つ続けて書くと可変長引数になります。 これ
-
【objective-c】シングルトンインスタンスを生成するクラスを定義する
あるクラスのインスタンスが常に1つのみ存在を許すような仕組みをシングルトンパターンといいます。
-
【objective-c】シングルトンパターン
MySingletone.h //クラスメソッドを定義 + (MySingletone*
-
【objective-c】Objective-C 基本の速習トレーニング
検索一発クンをiphoneに移植するにあたって、objective-cとxcodeの扱いに一番苦