Javaでメソッドを定義するときに

Writer: admin Type: このテヒョンのiPhone Date: 2018-12-15 00:00
Javaでメソッドを定義するときにpublic static void hello(){と書くと思いますがpublic staticは省略してもいいのですか?本で急に省略した形で出てきたのでびっくりしたのですが。。共感した0###>public staticは省略してもいいのですか?>これらにはきちんとした意味があります。何も書かなかったとしても書かないなりの意味があるので、単なる省略とは違います。そもそもJavaのメソッドは、アクセス修飾子 staticか否か 戻り値 メソッド名(引数の型 引数名) { 処理;}という形をしています。public static void hello()であれば、アクセス修飾子 = publicstaticか否か = static戻り値 = void(戻り値なし)メソッド名 = hello引数 = なしという状態です。アクセス修飾子は、「このメソッドをどこから呼び出せるか」を表します。アクセス修飾子には、public、protected、記載なし、privateの4つがあり、それぞれに意味があります。public → このメソッドをどこからでも呼び出せる。protected → 同一クラス、同一パッケージ、サブクラスからなら、このメソッドを呼び出せる。記載なし → 同一クラス、同一パッケージからなら、このメソッドを呼び出せる。private → 同一クラスからのみ、このメソッドを呼び出せる。staticか否かについては、「このメソッドがstaticメソッドか、インスタンスメソッドか」を表します。staticメソッドにする場合はstaticと記載し、インスタンスメソッドにする場合は何も書きません。staticメソッドはクラスに対して呼び出せるメソッドです。たとえば、String n = String.valueOf(123);など。(Stringクラスに対してvalueOfをコールしている)インスタンスメソッドはインスタンス化したオブジェクトに対して呼び出せるメソッドです。たとえば、String str = new String("123");char c = str.charAt(1);など。(Stringクラスのインスタンスstrに対してcharAtをコールしている)なので、void hello()と書いた場合は、アクセス修飾子 = なしstaticか否か = インスタンスメソッド戻り値 = void(戻り値なし)メソッド名 = hello引数 = なしとなりますから、「同一クラスまたは同一パッケージのクラスから呼び出せるインスタンスメソッドのhello」となります。本来メソッドというのは、・どのクラスから呼び出せるものにするのか。・クラスの状態で直接呼び出せるメソッドにするのか。・インスタンス化してから呼び出すのか。・戻り値は?・引数は?などなどを考慮した上で作るものなのです。「めんどくさいから全部publicでいいや」とか、「とりあえずstaticって書いとけ」とか、「別に書かなくても動くから書かなくていいや」とか、そういうことではないんです。(まぁ最初のうちは「全部public!」でも許されるけどね)ナイス0
###ありがとうございます全て丁寧に教えて頂けて助かりました###もうご回答ありますけど。> public staticは省略してもいいのですか?してもいいか? といわれれば、可。(^_^;)だけど、意味 変わります。理解必要。1.public static で1セット みたいな覚え方は、やめたほうがいい。2.publi は アクセス修飾子。初学者さんだと推察しますが、・1つのclass (なんちゃら.java 一本だけ)で書いてみましょうのうちは、用がないですし、ピンとこないかも。複数の class で一本のプログラムを構成するようになったとき、意味が出てきます。3.static の有無は、当該メソッドが・class にひもづくのか・それとも インスタンス にひもづくのかを決める。これも、Javaのオブジェクト指向部分にまだ学習が及んでいないのであれば、ピンとこないと思います。> 本で急に省略した形で出てきた...から想像すると、オブジェクト・インスタンス に踏み込む部分に、お読みの教科書が入ってきたとこなんじゃないかと。クラス と そのインスタンス の違いを理解することは、たいへん重要。( Javaの場合 )ナイス0
###【解決Java】アクセス修飾子(protected、privateなど)https://www.sejuku.net/blog/22679Java staticメソッドと非staticメソッドについてhttps://qiita.com/nao-otsu/items/0f4f4040435db5fac890クラスと staticなメソッドhttps://www.milk-island.net/document/java/kihon/l2/ナイス0

 

TAG