Javaを始めたばかりの者です。
参考書を読みながら進めていて下記のソースコードで
Dimensionクラスを使用している箇所で行き詰まりました。
使われていたのは、以下のコード
---------------------------------------------------------------------------------------------------------------------
import java.awt.*;
import javax.swing.*;
import java.util.*;
class xxx{
static public void main(String[] argv){
/*標準入力からmsgに文字列を入力*/
String msg = scan.next();
/*JLabelクラス型のオブジェクト型変数を作成し、インスタンスを生成*/
JLabel label = new JLabel(msg);
/*JLabelのインスタンスのコンストラクタに入力されたmsgのサイズを取得*/
Dimension dim = label.getPreferredSize();
・・・etc
}
}
----------------------------------------------------------------------------------------------------------------------
自分が今まで使ってきたクラスは下記のような感じで使っていましたが、ここではnewしていない。
これは、どういうことなんでしょうか?
クラス名 dim = new クラス名();
インスタンス作成 = コンストラクタの呼び出し。
new演算子はクラスのコンストラクタを呼び出している理解ですが
Dimension dim = label.getPreferredSize();
上記のコードではDimentionクラスのインスタンスは作られていないということだと思います。
ということは、
ここでは何をしているのでしょうか?
どなたか、教えて下さい。
No.2ベストアンサー
- 回答日時:
> インスタンスを生成せずにこの様な使い方をしているのはどういう理屈なのでしょうか?
Javaのインスタンスは必ずどこかで誰かがnewで生成したものであって、生成せずにインスタンスのフィールドやメソッドを使用することはできません。
質問文にある例でも、どこかでDimensionのインスタンスが生成されています。ただし、getPreferredSize()を呼ぶ人はその詳細を知る必要はなくて「getPreferredSize()を呼べば(どこかでnewされた)Dimensionのインスタンスが返ってくる」ことだけ理解していればいいのです。
回答有難うございます。
なるほど、インスタンスはどこかで誰かが必ず生成したものであって、生成せずにインスタンスのフィールドやメソッドを使用することはできない。
覚えておきます。
昨日からずっと気になっていました。やっと先に進めます。
>getPreferredSize()を呼ぶ人はその詳細を知る必要はなくて「getPreferredSize()を呼べば(どこかでnewされた)Dimensionのインスタンスが返ってくる」ことだけ理解していればいいのです。
なるほどー。
有難うございました。
No.1
- 回答日時:
label.getPreferredSize() の中で作ってるか何かしてるんじゃないの?
この回答への補足
回答ありがとうございます。
ちょっと、質問の仕方が悪かったようで申し訳ありません。
すいません、オブジェクト指向とかクラスという概念自体始めてなので
混乱しています。
もっと基本的なことで、
クラス名A 変数名 = new クラス名Aという使い方しか知らないので、
今回のような場合はどう解釈すれば良いのでしょう?
また、今回の場合後々dim.widthという値を使っていました。
これはDimensionクラスに有るwidthというフィールドを使っているんだと思うのですが、
インスタンスを生成せずにこの様な使い方をしているのはどういう理屈なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java java final 1 2022/06/10 22:49
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
オブジェクト参照がオブジェク...
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
[Visual C#] 優先される処理に...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
C#において、同じインスタンス...
-
データベースから日付型を取得...
-
フォームの存在をチェックする方法
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
Dimensionクラスの使い方
-
サーブレットでレスポンスが返...
-
フォームのCheck boxとOLEObjec...
-
VC#での24ビットbmp形式での保...
-
VB.NET Newしたものを変数に代...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
オブジェクト参照がオブジェク...
-
C# インスタンスの破棄
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
「インスタンス」の意味をわか...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
C#「オブジェクト参照が必要で...
-
javaのクラスの作り方、エラー...
-
SQLを連続発行する時の正しい(?...
-
他のファイルの変数参照
-
文字列を日付に変換でParseExce...
-
インスタンスを同じ名前で作成...
-
[Visual C#] 優先される処理に...
-
newしないインスタンス?実体化...
おすすめ情報