質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Java

    15865questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

修飾子や型などが、よくわからないです。

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 785

 修飾子や型、コードがなにをしているかが良く分からないので教えて欲しいです。聞きたいことはコード内に”?”で書いてあるのでよろしくお願いします。

本の記述ではメソッドの宣言は

修飾子 戻り値の型 名前 (引数1の型 引数1の名前 , 引数2の型 引数2の名前・・・)

と書いてあります。

そこで、様々なコードを参考書を元に書いて実践してきましたが、やはり、良く分からないです。

   public boolean   handle( Task     task)   {return "null" != null;}
//修飾子? 戻り値の型?   名前?    引数の型???     引数の名前???            なにこれ?


状態です。

他にも、Taskとtaskがなにを表しているかも分からない状態です。
return "null" != null;    
特にここが良く分からないです。
nullチェックというぐらいしか分からないので、どのように処理しているかが理解できてない状態です。

本当に初心者なのでどうしたら良いかわからないです。
できれば解説お願いします。

 該当のソースコード

   public class AnonymousClassSample {
// 修飾子  クラス   クラス名    
    public static void main(String...args) {
//修飾子 修飾子 戻り値の型 引数の型  名前??
        TaskHandler taskHandler = new TaskHandler() {
    //インタフェース名  インスタンス名?? インスタンス化???    
                 public boolean handle(Task task) {
       //修飾子?  戻り値の型? 名前? なにこれ????
                       return "null" != null;    
    //特にここが良く分からない。nullチェックというぐらいしか分からない。
        }

    };
    Task myTask = new Task();
    //Taskのインスタンス化??
    taskHandler.handle(myTask);
  //インスタンス化されたtaskHandler.
//handle(myTask)これはなにをしているのか?()のmyTaskは何???
}
}
public interface TaskHandler {
//修飾子 インタフェース? 名前?    
    boolean handle(Task task);
 //戻り値の型?  名前? 引数の型??? 引数の名前?????
}
public class Task {
//修飾子 //クラス名 //名前
}

 補足情報(FW/ツールのバージョンなど)

eclipse使用

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+2

最初のうちは何が書いてあるか分からないですよね。

public boolean handle( Task     task)   {return "null" != null;}

publicなので他のクラスからもこのメソッドを使うことができます。メソッドを使うと返り値はbooleanなので「true」か「false」のどちらかになります。handleはメソッドの名前です。

hundle()の( )内は引数が入ります。Taskという名前の型のみを受け付けtaskという変数名で受け取ります。{ }内でtaskを使用することができるようになりますが、このコード例では特に使用していないようです。

{}内は実際の処理です。文字列の"null"とオブジェクトを参照していないという意味のnullは別の物なので「!=」に当てはまります。ということでこの場合は必ずbooleanの「true」が返ってくることになります。

このメソッドを使う場合は、例えば

System.out.println( handle(someObject) );


と返り値を出力したり、変数に代入したりします。

sameObjectにはTask型のオブジェクトを事前に入れておく必要があるのでこのままでは動作はできないですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/24 13:59

    わかりわすい回答ありがとうございます。
    初心者の自分でも納得できました。

    キャンセル

checkベストアンサー

+1

ほとんど基礎で入門系サイト等に載っているはずですがねぇ。

( 一応、質問本文中に "様々なコードを参考書を元に書いて実践してきましたが" とあるので、少なくとも読み込まれたようですが... )

書籍やサイトを読むときは一冊 ( 一個? ) だけじゃなくて何種類も読んでください。

サイトや書籍によって表現方法が違いますから。

まぁ、質問内容にいきますか。


public, protected, private これを C++では アクセス修飾子と言った気がします。

これは他のクラスから扱えるかどうかっていう条件のものです。

public なら "公" ( おおやけ ) ですので 他のクラスでも使えます。

privateなら そのクラスからしか使えない。

protected は そのクラスと継承先しか使えない。

っていう条件指定。

戻り値の型 は そのメソッドが返すデータの型です。

名前 は メソッド名のことでしょうね。

 public boolean   handle( Task     task)   {return "null" != null;}

とあったら、 () 内にある Task は 引数として受け取るデータの型です。

task は 引数として受け取るデータそのものを格納するもの.

{ ... } は処理内容。

return "null" != null;

は言語によると思いますが、 "null" っていう文字列が null なら true が返されるっていうことじゃないでしょうか?

っていうか、この質問にある

 public boolean   handle( Task     task)   {return "null" != null;}

って意味ないと思う。

だって、task を一度も使っていないし。 ( {...} 内で。 )

例のコードを文章化すると、

Task型のtask を受け取り、"null"という文字列が null なら true (それ以外ならfalse) を返す
bool型 handleメソッド。publicなのでインスタンス化してあればどこからでも使える。

っていうこと。

ちょっとその書籍、説明に使うコードが適切じゃないと思う。


[追記0]

インターフェースについては

インターフェース

あたりを参照。

インスタンス化っていうのは、インスタンスを生成すること。オブジェクト生成ともいうけど。

クラス定義だけでは何もできません。単なる定義だけだし。

実際に生成して初めて使える。

new を使って生成するやつ。

taskHandler.handle(myTask);

は taskHandlerオブジェクトの handleにmyTaskっていうオブジェクトを渡して処理してもらっている...

私としてはその書籍は無駄だと思う。
だって、私からしても説明がおかしいと思うし。
だってなぁ、handleメソッドがTask taskを引数にしているけど一度も使わないって...

これって混乱の原因になるんだけど。

なので、私ならその本はやめて、他の書籍に乗り換える。

使うとしても他の書籍やサイトも一緒にやる。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/23 14:42

    x アクセス演算子
    o アクセス修飾子

    キャンセル

  • 2018/02/23 14:55

    C++の言語仕様書(freeで参照できるものの一つhttp://open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf)ではaccess specifiersです。日本語でIBM,MSDNのページをみると「アクセス指定子」と呼んでいるようです。
    Javaではaccess modifiers(https://docs.oracle.com/javase/specs/jls/se9/html/jls-6.html#jls-6.6.1)で、日本語では「アクセス修飾子」と思います。

    キャンセル

  • 2018/02/23 15:09

    ozwkさん, KSwordOfHasteさん
    そうですね。
    編集します ( 恥ずかしい )

    キャンセル

  • 2018/02/24 13:57

    教えていただきありがとうございます!
    わかりやすい説明で助かります。
    プログラミングを学ぶのって難しいですよね、正直評価が4以上あった本なのですがいざ買ってみるとあまりにも不親切でした。
    知っている本でオススメの本があれば是非紹介お願いします。

    キャンセル

  • 2018/02/25 12:17

    お勧めの本はありません...
    一応ありますが、人によるし、
    私は複数のサイトで学んでいますから。

    また、おススメの本を聞いても今回の質問みたいになる可能性が高いですよ?
    だって、人によるので。

    キャンセル

  • 2018/02/25 12:18

    サイト -> 書籍化 っていうパターンが意外とあります。
    ( "猫でも"さん等 )

    なのでまず自分の目で確かめて、「これはいいね!」って思うものをお読みください。

    キャンセル

  • 2018/02/25 14:55

    なるほど、プログラミングに王道はなしってことですね。
    複数のサイトや本を見ながらやっていきます。

    キャンセル

0

(コメントしようとして回答欄に書いた)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Java

    15865questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。