クラスを呼び出した時のオブジェクト名の出力について

このQ&Aのポイント
  • java勉強中の者です。現在クラスについての勉強をしています。クラスを呼び出した時に対象のオブジェクトの名前を表示させたいという質問です。具体的には「car1の車のナンバーは1111です。」と表示させたいです。
  • Carクラスのshowメソッド内で、「車のナンバーは」の直前に、呼び出したオブジェクトの名前を出力する方法を教えて欲しいです。
  • 具体的な簡単なサンプルを教えていただけるとありがたいです。
回答を見る
  • ベストアンサー

クラスを呼び出した時のオブジェクト名の出力について

ご覧いただいてありがとうございます。 java勉強中の者です。現在クラスについての勉強をしています。 質問内容ですが、クラスを呼び出した時に対象のオブジェクトの名前を表示させたいというものです。 以下、サンプルのコードを記載してその後詳しい説明をします。 class Car{//車の情報を保持 int number; //車のナンバーを保持 double gas;//ガソリンの量を保持 void show(){//車の情報を出力 NAMEの部分は後程説明します System.out.println("車のナンバーは"+ number +"です。"); System.out.println("車のガソリン量は"+ gas +"です。"); } public class Sample1{ public static void main(String[] args){ Car car1 = new Car();//car1のオブジェクト car1.number = 1111; car1.gas = 10; Car car2 = new Car(); car2.number = 2222; car2.gas = 20; car1.show(); } 以上がサンプルのプログラムです。 上記のclass Car内のvoid show()の中にあるSystem.out.printlnの2つの文あたりです。 「車のナンバーは~」の直前に、呼び出したオブジェクトの名前を出力したいのです。今回であれば、メインメソッド内の一番下の「car1.show();」のオブジェクト名を表示させたいです。 具体的には「car1の車のナンバーは1111です。」と表示させたいです。 関数か何かがあるのかと思い、少し調べてみましたが見当たらなかったため投稿させていただきました。関数が存在しないのであれば、具体的な簡単なサンプル等書いていただけるととてもありがたいです。 よろしくお願いします。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1512/2198)
回答No.3

この場合、car1というのは変数名であってオブジェクト名ではありません。区別しましょう。変数名をshow()メソッド内で取得することはJavaでは普通できません。 オブジェクトに名前をつけるなら、Carクラス内に String name; のようにフィールドを足して、show()メソッドでそのnameを参照するようにしましょう。 System.out.println(name + "のナンバーは"+ number +"です。"); 当然、numberやgasと同じようにnameにも値を設定する必要があります。

0tikuwa0
質問者

お礼

回答ありがとうございます。 結果的に「できない」ということがすぐにわかったので助かりました。 具体的な方法の記載もとてもありがたく思います。 いくつか似たようなコードを見つけたので、そちらも参考にしながら勉強を進めていこうと思います。 ありがとうございました。

その他の回答 (2)

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.2

https://www.javadrive.jp/start/about/index2.html こちらを確認して言葉の意味を確認されると良いと思います。

0tikuwa0
質問者

お礼

返事が遅れてしまいましてすみません。 追加の回答ありがとうございます。 回答の意図が正確にわからなかったので、たどり着いた情報から推察させていただきます。 まず「オブジェクト名」と私が呼んでいたのはそもそも間違っていましたね。ありがとうございます。「オブジェクトを指す変数名」が正解でしょうか。 前回の私の返信後、調べてみましたができないような記述がありましたので結果としては「できない」で間違いなさそうですね。

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.1

もっと調べた方が良いと思います。 『java クラス名 取得』では検索しましたか?

0tikuwa0
質問者

お礼

回答ありがとうございます。 (サイト自体を使うのが初めてなので、返信等をするのがここでよいのかどうかもわかりませんが...) 同じような内容で検索をしましたが自分の知りたい情報が出ていませんでした。 回答の語句で検索し、上から20件ほどサイトを開いて内容を確認しましたが見つかりませんでした。(クラスの内容を勉強し始めたばかりなので、見つけても気づいていないだけの可能性もありますが) クラスの名前(今回であれば「Car」かと思います)を取得することについては、事前の検索で見つけていました。ですが「car1.show()」と実行した際の「car1」の部分を表示させるための方法については見当たりませんでした。(重ねて言いますが、気づいていないだけの可能性もあります) 記載してあるサイト等ありましたら、お手数ですが検索ワードとサイトの名前等教えていただけないでしょうか。 よろしくお願いします。

関連するQ&A

  • 抽象クラス、インターフェイスについて

    少し長いですが、以下にコードを書きました。これでコンパイルすると、13個ほどエラーが出て、何がなんだかわかりません。何が間違っているのでしょうか?よろしくお願いします。ちなみに本を見ながらの独学です。 //のりものインターフェイス interface iVehicle { abstract void show(); } //車くらす class Car implements iVehicle { private int num; private double gas; public Car(int n, double g)) { num = n; gas = g; System.out.println("ナンバー" + num +"ガソリン量" + gas +"の車を作成しました"); } public void show() { System.out.println("車のナンバーは" + num +"です"); System.out.println("ガソリン量は" + gas +"です"); } } //飛行機クラス class Plane extends Vehicle { private int flight; public Plane(int f) { flight = f; System.out.println("便" + flight +"の飛行機を作成しました"); } public void show() { System.out.println("飛行機の便は" + flight +"です"); } } class sample8 { public static void main(String args[]) { iVehicle ivc[]; ivc = new iVehicle[2]; ivc[0] = new Car(1234, 20.5); ivc[1] = new Plane(232); for(int i=0; i<ivc.length; i++){ if(vc[i] instanceof Car) ivc[i].show(); } } }

    • ベストアンサー
    • Java
  • "add"とは?f

    class Car { int num; double gas; void setNum(int n) { num = n; System.out.println("ナンバーを" + num + "にしました。"); } void setGas(double g) { gas = g; System.out.println("ガソリン量を" + gas + "にしました。"); System.out.println("この車は満タンで40リットル入ります。"); } void show() { System.out.println("車のナンバーは"+num+"です。"); System.out.println("ガソリン量は"+gas+"です。"); } } class Prog11_1 { public static void main(String args[]) { Car car1 = new Car(); Car car2 = new Car(); car1.setNum(1234); car1.setGas(20.5); car2.setNum(5678); car2.setGas(30.8); car1.addGas(10.0); car2.addGas(10.0); car1.show(); car2.show(); } } 上記のプログラムの足りないところを補い、完成させるというものなんですが、"add"というのは一体どのような役割を持っているものなんでしょうか? 分かる方いらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • 別ファイルのclassの読み込みについて

    Javaを勉強し始めたばかりのものです。 購入した参考書を見ながら勉強していますが、表題の件の項目で参考書ではうまくいくように表記されておりますが、実際にやってみると下記エラーが表示されます。 --------------------------------------------- C:\XXXXXXXXXX>javac ../../sample/Sample1.java ..\..\sample\Sample1.java:3: シンボルを見つけられません。 シンボル: クラス Car 場所 : Sample1 の クラス Car car1 = new Car(); ^ ..\..\sample\Sample1.java:3: シンボルを見つけられません。 シンボル: クラス Car 場所 : Sample1 の クラス Car car1 = new Car(); ^ エラー 2 個 ------------------------------------------------------ ちなみに下記はソースとなります。 -------------------------------------------- 【Car.java】 //Carクラス class Car { private int num; private double gas; public Car(){ num = 0; gas = 0.0; System.out.println("車を作成しました。"); } public void setCar(int n, double g){ num = n; gas = g; System.out.println("ナンバーを" + num + "ガソリン量を" + gas + "にしました。"); } public void show(){ System.out.println("車のナンバーは" + num + "です。"); System.out.println("ガソリン量は" + gas + "です。"); } } 【Sample1.java】 class Sample1 { public static void main (String args[]){ Car car1 = new Car(); car1.show(); } } --------------------------------------------------- なんとなくエラーが出るだろうとはわかりますが、上記の記載方法だとやはりうまくいかないのでしょうか? お忙しいところ申し訳ありませんが、どなたかご教示の程お願いいたします。

    • ベストアンサー
    • Java
  • 初心者なので教えてほしいです。

    下記のコードなんですが、どこか間違っていますか? テキスト通りに入力したはずなんですが、 『メソッド本体がないか、abstractとして宣言されています』 というエラーが出てしまいます。 どういう意味なのか分らなくて・・・ **************************************************** //車クラス class Car{ int num; double gas; } //車クラスのオブジェクトを作成する class Sample1{ public static void main(String[] args); { Car car1; car1 = new Car(); car1.num = 1234; car1.gas =20.5; System.out.println("車のナンバーは" +car1.num+ "です。"); System.out.println("ガソリンの量は" +car1.gas+ "です。"); } } *************************************************************

    • ベストアンサー
    • Java
  • Javaの戻り値のコード

    Java初心者です。returnの例文で分からない所があります。 (1)考え方として car1.setNumGas(1234, 20.5); の時点で void setNumGas(int n, double g) はvoid setNumGas(1234, 20.5)になり 次にgetNum( ) そのものを引っ張ってきているので、 ナンバーを調べました という文字まで一緒に引っ張らないのでしょうか? なぜ 次の行のretun文だけを拾うのですか? (2)returnのイメージがまだ出来ていません。 int number = car1.getNum(); とした時点で int getNum()  にジャンプし、 その中の returnを見つけ、 そしてreturnが numを使っている所をコードを下に降りて順に探しに行く というイメージで合ってますか? -------------------------------------------------------------------- return num; →よーし探しに行こう! まずdouble getGas()の中 → うーんない 次にvoid setNumGas(int n, double g) の中 { num = n;    →   お、あった! nは今1234だな、だから表示結果は1234 --------------------------------------------------------------------------- こんな認識で合ってますでしょうか? class Car { int num; double gas; int getNum() { System.out.println("ナンバーを調べました。"); return num; } double getGas() { System.out.println("ガソリン量を調べました。"); return gas; } void setNumGas(int n, double g) { num = n; gas = g; System.out.println("車のナンバーを" + num + "にガソリン量を" + gas + "にしました。"); } void show() { System.out.println("車のナンバーは" + num + "です。"); System.out.println("ガソリン量は" + gas + "です。"); } } class Sample6 { public static void main(String[] args) { Car car1 = new Car(); car1.setNumGas(1234, 20.5); int number = car1.getNum(); double gasoline = car1.getGas(); System.out.println("サンプルから車を調べたところ"); System.out.println("ナンバーは"+ number + "ガソリン量は" + gasoline + "でした。"); } }

    • ベストアンサー
    • Java
  • 「インターフェイス」って何の為に必要なんですか?

    “値を変更できるフィールドがもてない”・“抽象クラスしかもてない”のに何の為に記述するんだろう?と思って、インターフェイスを入力せずに実行してみたのですが、入力してもしなくても同じ結果が出ました。 同じ結果が出るならなぜ必要なんですか? ************* コード **************************************** //のりものインターフェイス interface iVehicle{ void vShow(); } //材料インターフェイス interface iMaterial{ void mShow(); } //車クラス class Car implements iVehicle,iMaterial{ private int num; private double gas; public Car(int n, double g){ num = n; gas = g; System.out.println("ナンバー"+ num + "ガソリン量" +gas + "の車を作成しました。"); } public void vShow(){ System.out.println("車のナンバーは" + num +"です。"); System.out.println("ガソリン量は" + gas + "です。"); } public void mShow(){ System.out.println("車の材質は鉄です。"); } } class Sample1{ public static void main(String[] args){ Car car1 = new Car(1234, 20.5); car1.vShow(); car1.mShow(); } } ************************************************************** <実行結果> 「ナンバー1234ガソリン量20.5の車を作成しました。  車のナンバーは1234です。  ガソリン量は20.5です。  車の材質は鉄です。              」 インターフェイスを記述してもしなくても、同じく上記の結果が 出ました。 ※ちなみに抽象クラスもいったい何なのかよく分りません。

    • ベストアンサー
    • Java
  • パッケージのエラーについて

    パッケージのエラーについてなのですが、コンパイルできずにいます。 C:\java\13\r内に Car.java rensyu1.javaをおいています。 コマンドプロンプトには C:\java\13> と表示させています。classpathの設定はしていません。 システム内の環境設定はしました。 ------------------------Car.java package r; class Car { private int num; private double gas; public Car() { num = 0; gram = 0.0; System.out.println("車を作成しました。"); } public void setCar(int n, double g) { num = n; gram = g; System.out.println("ナンバー:" + number + "ガソリン:" + gas + "です。"); } public void show() { System.out.println("車のナンバーは" + number + "です。"); System.out.println("ガソリン量は" + gram + "です"); } } -------------------------------------rensyu1.java package r; class rensyu1 { public static void main(String args[]) { Car car1 = new Car(); car1.show(); } } やさしいjavaという本を参考にしていまして 教科書どうりですと javac r\rensyu1.java java r.rensyu1でコンパイルできるはずでしたが 「シンボルを見つけられません」というエラーが出ます。 気になるのが、ファイルr内にCar.classがありません。 他にもjavac -classpath . rensyu1.java を入力してみましたが、こちらは 「無効なフラグです」というエラーがでます。 教えていただけると助かります。宜しくお願いします。

    • ベストアンサー
    • Java
  • インターフェイスを2つ以上実装

    こんにちは。 高橋麻奈さん著の「やさしいJava」を使ってJavaを学んでいるのですが、インターフェイスのところでつまずいています。 インターフェイスは2つ以上クラスに実装できるということですが、本に書いてあるサンプル文では2つ実装されているものが載っています。 それにさらにもう一つインターフェイスを自分で書き加えて実装させてみたのですが、エラーが出てコンパイルできませんでした。書き加える前の状態では普通にコンパイル&実行できました。 ということは書き加えた部分が間違ってるはずなのですが自分には何処が間違っているのかわかりません。 以下にそのコード全文を載せておきますね。(色インターフェイス関連が書き加えた部分) どなたかわかるかたがいらっしゃいましたらご回答お願いします。 //のりものインターフェイス interface iVehicle { void vShow(); } //材料インターフェイス interface iMaterial { void mShow(); } //色インターフェイス interface iColor(); { void cShow(); } //車クラス class Car implements iVehicle, iMaterial, iColor { private int num; private double gas; public Car(int n, double g) { num = n; gas = g; System.out.println("ナンバー" + num + "ガソリン量" + gas + "の車を作成しました"); } public void vShow() { System.out.println("車のナンバーは" + num + "です"); System.out.println("ガソリン量は" + gas + "です"); } public void mShow() { System.out.println("車の材質は鉄です"); } public void cShow() { System.out.println("車の色は黄色です"); } } class Sample4 { public static void main(String args[]) { Car car1 = new Car(1234, 20.5); car1.vShow(); car1.mShow(); car1.cShow(); } }

    • ベストアンサー
    • Java
  • プログラミングお願いします(JAVA)

    フィールドとして、「ナンバー」「ガソリン残量」「走行距離」「エンジンの排気量」の4つ、それらの値を表示するメソッド4つから構成されるCar2ラスを作成し、メインメソッドで2つのオブジェクトkcar と bcar を作成し、それぞれに、次の値を代入し、Car2ラスのメソッドを呼び出してそれぞれの値を表示するプログラムを作成しなさい オブジェクト名  ナンバー   ガソリン残量        走行距離   排気量 kcar        552        25.1            22000      2000 bcar        441        33.5           9940        2000 //↓一応自分が書いたコードなので会ってるか分かりませんが、違ってたら教えてください Car2 { int num; double gas; int m; int h; int num1; double gas1; int m1; int h1; void show() { System.out.println("kcar"+num+ +gas+m+h); System.out.println("bcar"+num1+ +gas1+m1+h1); } } class Sample1 { public static void main(String[] args) { Car2 car1; car1 =new Car2(); car1.num=552; car1.gas=25.1; car1.m=22000; car1.h=2000; car1.num1=441; car1.gas1=33.5; car1.m1=9940; car1.h1=2000; car1.show(); } }

  • プログラミングお願いします(java)

    問題 フィールドとして、「ナンバー」「ガソリン残量」「走行距離」「エンジンの排気量」の4つ、それらの値を表示するメソッド4つから構成されるCar2ラスを作成し、メインメソッドで2つのオブジェクトkcar と bcar を作成し、それぞれに、次の値を代入し、Car2ラスのメソッドを呼び出してそれぞれの値を表示するプログラムを作成しなさい オブジェクト名  ナンバー   ガソリン残量        走行距離   排気量 kcar        552        25.1            22000      2000 bcar        441        33.5           9940        2000 ↓一応自分のコードを作成しました・しかしこの問題にあってるか分かりません。違ってたら指摘してください///出来たらコード作成してくださると助かります class Car2 { int num; double gas; int m; int h; int num1; double gas1; int m1; int h1; void show() { System.out.println("kcar"+num+ +gas+m+h); System.out.println("bcar"+num1+ +gas1+m1+h1); } } class Sample1 { public static void main(String[] args) { Car2 car1; car1 =new Car2(); car1.num=552; car1.gas=25.1; car1.m=22000; car1.h=2000; car1.num1=441; car1.gas1=33.5; car1.m1=9940; car1.h1=2000; car1.show(); } }

専門家に質問してみよう