
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
文字列を日付に変換でParseExce...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
オブジェクト参照がオブジェク...
-
変数の参照でエラーが出てしま...
-
VB.NET getとsetの概念がわかり...
-
initialize.apply(this,arg
-
javaについて
-
クラスのインスタンス名をクラ...
-
生成したインスタンスを削除す...
-
フォームの存在をチェックする方法
-
サーブレットでレスポンスが返...
-
非staticフィールドを参照でき...
-
インスタンスとスレッドの違い
-
javaのクラスの作り方、エラー...
-
C#の構造体の開放のしかた
-
インスタンスを同じ名前で作成...
-
Dimensionクラスの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
C#において、同じインスタンス...
-
C# インスタンスの破棄
-
変数の参照でエラーが出てしま...
-
インスタンスを同じ名前で作成...
-
VB.NET getとsetの概念がわかり...
-
newしないインスタンス?実体化...
-
javaのクラスの作り方、エラー...
-
非staticフィールドを参照でき...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
フォームの存在をチェックする方法
-
大量のデータとインスタンスの...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
おすすめ情報