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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

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

Q&A

解決済

3回答

505閲覧

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

former_neet_cat

総合スコア46

Java

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

0グッド

0クリップ

投稿2018/02/23 04:35

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

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

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

と書いてあります。

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

java

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

状態です。

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

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

該当のソースコード

java

1 public class AnonymousClassSample { 2// 修飾子  クラス   クラス名 3 public static void main(String...args) { 4//修飾子 修飾子 戻り値の型 引数の型  名前?? 5 TaskHandler taskHandler = new TaskHandler() { 6 //インタフェース名  インスタンス名?? インスタンス化??? 7 public boolean handle(Task task) { 8       //修飾子?  戻り値の型? 名前? なにこれ???? 9 return "null" != null; 10 //特にここが良く分からない。nullチェックというぐらいしか分からない。 11 } 12 13 }; 14 Task myTask = new Task(); 15    //Taskのインスタンス化?? 16 taskHandler.handle(myTask); 17  //インスタンス化されたtaskHandler. 18//handle(myTask)これはなにをしているのか?()のmyTaskは何??? 19} 20} 21

java

1public interface TaskHandler { 2//修飾子 インタフェース? 名前? 3 boolean handle(Task task); 4 //戻り値の型?  名前? 引数の型??? 引数の名前????? 5} 6

java

1public class Task { 2//修飾子 //クラス名 //名前 3}

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

eclipse使用

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

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

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

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

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

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

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

java

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

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

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

投稿2018/02/23 05:59

spring_learner

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

former_neet_cat

2018/02/24 04:59

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

0

ベストアンサー

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

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

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

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

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


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 05:22

編集2018/02/23 06:10
BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2018/02/23 05:42

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

2018/02/23 05: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)で、日本語では「アクセス修飾子」と思います。
BeatStar

2018/02/23 06:09

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

2018/02/24 04:57

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

2018/02/25 03:17

お勧めの本はありません... 一応ありますが、人によるし、 私は複数のサイトで学んでいますから。 また、おススメの本を聞いても今回の質問みたいになる可能性が高いですよ? だって、人によるので。
BeatStar

2018/02/25 03:18

サイト -> 書籍化 っていうパターンが意外とあります。 ( "猫でも"さん等 ) なのでまず自分の目で確かめて、「これはいいね!」って思うものをお読みください。
former_neet_cat

2018/02/25 05:55

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

0

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

投稿2018/02/23 05:41

編集2018/02/23 05:43
ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問