*

【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() {
    //処理
  }


関連記事

no image

【objective-c】Objective-C 基本の速習トレーニング

検索一発クンをiphoneに移植するにあたって、objective-cとxcodeの扱いに一番苦

記事を読む

no image

【java】正規表現

基本的な使い方 //●コンストラクタ String regExp = "[^0

記事を読む

no image

【objective-c】デリゲート[delegate]を実装する

デリゲートは「委譲」と訳され、クラスAで起きたイベントの処理をクラスBで実装する仕組みです。

記事を読む

no image

【objective-c】シングルトンインスタンスを生成するクラスを定義する

あるクラスのインスタンスが常に1つのみ存在を許すような仕組みをシングルトンパターンといいます。

記事を読む

no image

【objective-c】正規表現

NSString* targetStr = @"19801231&qu

記事を読む

no image

【java】 リフレクションの使い方

instanceメンバ ・メソッド import java.lang.reflect.F

記事を読む

no image

【java】可変長引数 String… args

javaのメソッドで引数の型の後ろにドット「.」を3つ続けて書くと可変長引数になります。 これ

記事を読む

no image

【objective-c】シングルトンパターン

MySingletone.h //クラスメソッドを定義 + (MySingletone*

記事を読む

no image

【java】Calendar : 日付や時間を扱う

Locale locale = Locale.getDefault(); Calendar c

記事を読む

no image

【objective-c】エラーメッセージとその実態

java人間にとってxcodeのコンソールが吐くログはナニヲイッテルノカワカラン。 なので、こんな

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

no image
知らないと損をする6つのライセンスまとめ

オープンソースやフリーウェア、フリー素材などが巷に溢れ、それらを利用す

no image
ガリレオ:ニュースブラウザをリリースしました。

概要 ガリレオはニュースを読んだり、検索する機能に特化したブラウザア

no image
【android】Activityとプロセスのライフサイクル

またもやライフサイクル周りでハマったのですが、Androidのライフサ

→もっと見る

PAGE TOP ↑