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

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

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

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

Q&A

解決済

2回答

11445閲覧

staticなクラスを理解したい

k499778

総合スコア599

Java

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

1グッド

0クリップ

投稿2017/05/14 01:07

編集2017/05/14 01:09

Javaで開発をしています。
staticなクラスを理解したいと思い質問致します。

以前「staticなクラスだからstaticなメソッドを定義している
という話を伺いました。

これはどういう意味でしょうか?私はこのようなルールを知らないためよくわかりませんでした。

私が持っている知識は以下です。
・static変数(クラス変数)、staticメソッド(クラスメソッド)はある
・非static変数・メソッドはオブジェクト毎にひとつなのに対し、static変数・メソッドは別箇所に一つだけ作られるため共用される
・static変数・メソッドはnewせず、「クラス名.変数」「クラス名.メソッド」で呼び出すことができる
・staticなインナークラスは存在する

staticなクラスというものがそもそもよくわからないし、それが理由でstaticなメソッドを定義するというJavaのルールも知らないため、このような質問をさせていただきました。

もし何か情報を持っている方がいらっしゃればよろしくお願いいたします。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

内部クラスのことではないということで回答します。

文字列関連のメソッド、日付関連のメソッドなど操作対象の種類ごとに複数のメソッドがあり、これらのstaticメソッドのみを持つクラスを定義して使いやすくします。
StringUtilesとかDateUtilesクラスとするわけです。
このクラスのメソッドはインスタンス化しなくても呼び出せるので、他の方も書いているようにインスタンス化させないためコンストラクタをprivateにしたりします。
補足としてはコンストラクタをprivateにするケースは他にもあって、必ずstaticなファクトリーメソッドを通じてインスタンス化させたい場合にはコンストラクタはprivateであることがあります。これは複雑な初期化処理が必要な場合などに現れます。

さて、そういった意味だとstaticなメソッドしかないのでstaticなクラス(インスタンス化させない)にするということですね。

投稿2017/05/14 04:31

編集2017/05/14 04:36
yasushi_sapporo

総合スコア61

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

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

k499778

2017/05/14 07:58

回答ありがとうございます。 具体的な使用法が書いてあり、イメージして理解することがてきました。 staticなクラスとはクラス名にstatic修飾子が定義されているわけではなく、staticなメソッドのみのクラスという意味だったのですね。 わかりやすかったです。ありがとうございます。
yasushi_sapporo

2017/05/15 04:48

評価ありがとうございます。もう少し学習が進むとstatic inner classというものが現れます。これは全く別のものですのでそのときは気持ちを新たにして取り組んでください。今は忘れたほうがよいです。
guest

0

内部クラスでない「staticクラス」は、「インスタンス化しないクラス」を意味する俗称で、正式な文法用語ではありません。

「インスタンス化しない」のに有用ということで、以下のような構造を取ります。

  • コンストラクタがprivateになっていて、インスタンス化できない
  • 当然、インスタンスメソッドがあっても使いみちがないので、メソッドはすべてstatic

投稿2017/05/14 01:28

maisumakun

総合スコア145121

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

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

k499778

2017/05/14 07:56

回答ありがとうございます。 やはり俗称だったのですね。 コンストラクタをprivateにし、呼び出させないようにしておいて、staticなメソッドだけを定義して共用できるようにしている。 理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問