• ベストアンサー

クラスの作成 オブジェクトの生成 メンバ変数へのアクセス

Person というクラスを宣言し、main メゾットで new 演算子を使ってPerson オブジェクトを作成。さらに、main メゾットでインスタンス変数に値を代入して表示したい。 Person クラスのインスタンス変数には、名前 年齢 給料 を用意する。 変数のデータ型は、順に String , int float です。 Person クラス以外で main メゾットを作成する。 初心者です、本は結構読んだのですが、なかなかわかりませんでした。 おしえてください。

  • Java
  • 回答数7
  • ありがとう数4

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

  • ベストアンサー
  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.7

ANo4,6です 原因が分かりました。 hivagonnさんは class Person と宣言すべきところを class Person1 としていませんか。

hivagonn
質問者

お礼

ありがとうございました。 言われるとおり、安易に名前を変えてしまったことも原因のひとつでした。すいません、ご迷惑をおかけしました。 後、コンパイルの仕方が、まずかったようです、Personで、コンパイル実行していましたが、ファイルを分けて、PersonTestで、コンパイル実行すればよかったんですね。すいません。ありがとうございました。

その他の回答 (6)

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.6

ANo4です こちらでは問題なくコンパイル、実行が出来ます。 hivagonnさんの書いたコードを全て貼り付けてください。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>toi62.java:20: クラス Sample は public であり、ファイル >Sample.java で宣言しなければなりません。 main メソッドのあるクラス名 とファイル名を合わせてください 例えば、 public class Sample { の場合 Sample.java にします。 class PersonTest なら PersonTest.java

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.4

なるべく簡単にしました class Person{ String name; int age; float pay; Person(String name,int age,float pay){ this.name = name; this.age = age; this.pay = pay; } public void showPerson(){ System.out.println("名前 " + name + " 年齢 " + age + "才" + " 年俸 " + pay + "$"); } } public class PersonTest { public static void main(String args[]){ Person person = new Person("イチロー",31,4000000f); person.showPerson(); } }

hivagonn
質問者

補足

ありがとうございます。 Person1.java:5: メソッドの宣言が不正です。戻り値の型が必要です。 Person(String name,int age,float pay){ ^ エラー 1 個 上記のエラーが出ました。 コンパイルの仕方が悪かったのでしょうか?

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.3

メゾット ではなく メソッド(method) http://e-words.jp/w/E383A1E382BDE38383E38389.html

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんな感じで、どうでしょう class Person { String name; int year; float salary; public Person(String name, int year, float salary) { this.name = name; this.year = year; this.salary = salary; } } public class pp { /** Creates a new instance of pp */ public pp() { } /** * @param args the command line arguments */ public static void main(String[] args) { Person p1 = new Person("佐々木 小次郎",20,3000); Person p2 = new Person("宮本 武蔵",30,4000); //小次郎のデータ System.out.println("名前="+p1.name); System.out.println("年齢="+p1.year); System.out.println("給料="+p1.salary); System.out.println("名前="+p2.name); System.out.println("年齢="+p2.year); System.out.println("給料="+p2.salary); // TODO code application logic here } }

hivagonn
質問者

お礼

ありがとうございました。 何とか上手くできました。 助かりました。

hivagonn
質問者

補足

ありがとうございます。 Person2.java:10: メソッドの宣言が不正です。戻り値の型が必要です。 public Person(String name, int age, float salary){ ^ エラー 2 個 どうも上手く行かないです。。。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

class Person { public String 名前; public int 年齢; public float 給料; public Person(){ 名前="NONAME"; 年齢=0; 給料=0.0F; } public Person(String name, int age, float salary){ 名前=name; 年齢=age; 給料=salary; } public String toString(){ return "Person(名前:"+名前+",年齢:"+年齢+",給料:"+給料+")"; } } public class Sample { public static void main(String[] args) { Person bluepixy = new Person("BLUEPIXY", 99, 1.7320508F); System.out.println(bluepixy); Person anyone = new Person(); System.out.println(anyone); anyone.名前="ANY"; anyone.年齢=18; anyone.給料=23.5F; System.out.println(anyone); } }

hivagonn
質問者

お礼

ありがとうございます、私のコンパイル、実行の仕方が割る方用です、吸いませんでした。 ありがとうございました。 ひとつのファイルとして、コンパイルしていました。 ありがとうございました。

hivagonn
質問者

補足

ご回答ありがとうございます、 参考にさせていただいてます。 下記のようなエラーメッセージが、コンパイル時に出ました。 toi62.java:20: クラス Sample は public であり、ファイル Sample.java で宣言しなけ ればなりません。 public class Sample { ^ エラー 1 個

関連するQ&A

  • ラッパークラスのオブジェクト作成について教えてください。

    ラッパークラスのオブジェクト作成について教えてください。 ラッパークラスのオブジェクト作成には ・new演算子を使ってインスタンス化する方法 ・ラッパークラスのstaticメソッドを呼び出す方法 の2つの方法があると書籍に書いてありました。(SJC-Pのテキストです) では Integer i = 1000; のような記述はどうでしょうか? Integerはintのラッパークラスと思うのですが、iはインスタンスじゃないという事でしょうか?

    • ベストアンサー
    • Java
  • クラスメソッドのみのクラスのオブジェクト生成は不可??

    あるテキストのjavaの問題です。 public class Draw{   static void pixel(int x,int y){     /*座標(x、y)に点を描画*/   }   static void line(int x1,int y1,int x2,int y2){     /*座標(x1、y1)~(x2、y2)に線を引く*/   } } で、これを実行するための以下のようなクラス public class TestDraw{ <ここに入力> } という問題なのですが2つまでは絞れたのですが、 (1) public static void main(String args[]){   Draw d = new Draw().line(10,10,20,30); } ↑× (2) public static void main(String args[]){   Draw.line(10,10,20,30); } ↑○ (2)はlineメソッドがstaticメソッドだからオブジェクト生成しなくても良い、ということなんですが (1)も正解のような気がするのですが・・・ 解説によると「lineはvoidなのでnew Draw().line(10,10,20,30);とすれば正解、とあります。 どうもいまいち理解できません。 クラスメソッドはオブジェクト生成しなくとも良い→オブジェクト生成できない ということなのでしょうか? それからちなみに、public classって2つ記述できないんではありませんでしたか?

    • ベストアンサー
    • Java
  • クラス作成

    C#にてクラス作成をしております。その中で疑問に思った点を質問させていただきます。 画像を枠内に表示させるクラス 実装すべき変数:枠番号、パス、 映像を枠内に流すクラス 実装すべき変数:枠番号、パス、再生時間 Flashを枠内に流すクラス 実装すべき変数:枠番号、パス など色々なクラスがあってそれをまとめたクラスを作成中です。 上記のクラスを実装するにあたって、共通の変数はクラスにしてしまい それを継承しましょうと言う指示がありました。これはどういった使い方をするものなのでしょうか? class Class2 { public int no { get; set; } public string path { get; set; } } class Movie : Class2 {    public float time{get;set;} public void Play(int frameNo, string path, float playtime){} } class Picture: Class2 {    public void Show(int frameNo, string path){} } これをForm1.cs内で Class2 cls = new Class2(); cls.path = "C:\\test"; cls.no = 11; とかすれば MovieやPictureで使いまわしができると思いきや MovieやPictureをNewすれば初期化されてしまう為、何か根本的に 私の考えが間違ってると思います。 共通の変数を別のクラスにしておいて継承して使うというのはどういった使い方をするのでしょうか? よろしければ例で教えていただけないでしょうか

  • クラス変数について質問

    Javaのオブジェクト指向を解説した参考書で現在勉強しているのですが、その参考書のある問題の答えの解説として「クラス変数は参照変数なので参照以外を代入できません」と書いてありました。 でも、例えば、static int n=0と書けば、0をnに代入できます。 因みに、「クラス型の変数」は参照しか代入できないのはわかっています。 よって「クラス変数」は誤植で、正しくは「クラス型変数」なのでしょうか?

    • ベストアンサー
    • Java
  • objectクラスの継承

    下記の手順でobjectクラスの継承のプログラムを作成したのですが、作成する際に(1)の条件プログラムと(3)のプログラム内容、つまり意味が分かりません。これはどのようなプログラムにしたら一番いいですか?至急連絡をください。 手順 (1)Personオブジェクトの身長と体重の数値が両方とも一致していればtrue、そうでなければfalseをか    えすように、equals()をオ ーバーライドする。 (2)main内で、Personクラスのstudent1、student2、student3オブジェクトを用意する。 (3)student1、student2は独立に用意し、同じ数値を代入する。student3にはstudent1を代入する。 (4)student1とstudent2に対してequals()メソッドを適用する。 (5)student1とstudent3に対してequals()メソッドを適用する 結果 student1とstudent2の内容が同じかどうか調べたところtrueでした。 student1とstudent3の内容が同じかどうか調べたところtrueでした。 class Person { private double height, weight; public void inputData(double ht, double wt) { height = ht; weight = wt; } public void showData() { System.out.println("身長: " + height + "cm, 体重:"+ weight + "kg"); } } class K4 { public static void main(String args[]) { Person student1 = new Person(); Person student2 = new Person(); Person student3 = new Person(); student3 = student1; boolean bl1 = student1.equals(student2); boolean bl2 = student1.equals(student3); System.out.println("student1とstudent2の内容が同じかどうか調べたところ"+bl1+"でした。"); System.out.println("student1とstudent3の内容が同じかどうか調べたところ"+bl2+"でした。"); } }

    • ベストアンサー
    • Java
  • ポリモーフィズムについて考えている途中、思ったことがありまして

    ポリモーフィズムについて考えている途中、思ったことがありまして 解決できそうもなかったので、質問させてください。 ----------------------------------------------------- オブジェクトStudentには、親クラスPersonがいる。 Person student = new Student(); ----------------------------------------------------- 上記のようにポリモーフィズムの考え方として、 「インスタンスは親クラスの型を持つ変数に代入できる」のですが、 Student student = new Student(); も同じような動きとなる?のであれば、 student = new Student(); として宣言できても良いように思います。 なぜ、そうなっていないのか理由がありますか? また、説明が”とんちんかん”なことになっていますか? なにか、ヒントがあればよろしくお願いします。

    • ベストアンサー
    • Java
  • 親クラスの型で子のオブジェクトを扱う

    ●下記のコードについての質問となります class Y { int num2 = 20; } class Z extends Y { int num3 = 30; } class Sample{ public static void main(String args[]){ --------------------------------------------- Y y1 = new Z(); --------------------------------------------- System.out.println(y1.num2); System.out.println(y1.num3); } } 「-----」で囲まれている部分になりますが、 親クラスの型で子のオブジェクトを扱おうと思うのですが、 「System.out.println(y1.num3);」 この部分において、コンパイルエラーとなります。 Zクラスから生成されたオブジェクトへの参照を Y型変数y1に代入していると思うのですが、 何故、「y1.num3」の値が表示されないのかを ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ お伺いしたいと思っております。 以上、宜しくお願い致します。

    • ベストアンサー
    • Java
  • 文字列のメンバ変数を外部変数のように扱いたい

    済みません。質問なのですが、 メンバ変数を外部変数のように扱うにはどうしたらよいのでしょうか? int型などの場合、 class test{ static const int a; }; const int test::a = 10; とすればよいですよね? これをcharの配列にして class test{ static char a[7][32]; }; char test::a[0] = "test"; とすると サイズが0の配列を割り当てまたは宣言しようとしました というコンパイルエラーがでてしまいます…。 多次元配列の場合はstatic変数としてもてないのでしょうか? char** として宣言してもどこでnewを行えばよいか解りません。 コンストラクタの中で行えば そこでstaticではなくなってしまいますし…。 後、できればstringクラスの配列で持ちたいのですが #include <string> class test{ static string test[7]; }; string test::test[0] = "aaa"; なんてことができますでしょうか? 質問内容が解りにくいかも知れませんが どうか教えてください。 宜しくお願いいたします。

  • メンバ変数宣言時にfinal修飾子

    いつも御世話になっています。 final修飾子を使用する際で、メンバ変数宣言時で、 オブジェクト型変数にfinalをつけた際、値を変更できると思うのですが。 インターフェースで考えた時はどうなるのでしょうか? クラス型だと, final ClassA object1 = new ClassA(); classA.value = 10; //valueはint型 と記述されると思うのですが、 また、配列だと, final String[] hairetu = {"one","two"}; classA.strValue = hairetu; とするのがいいのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Java
  • javanoリストのオブジェクト作成について

    リストのオブジェクトを作成するときに、 (1) List<Person> list = new ArrayList<Person>(); (2) ArrayList<Person> list = new ArrayList<Person>(); と二つの宣言の仕方をよく見かけるのですが、この二つは 何が違うのでしょうか。また、どのような場合にそれぞれ 使われることが多いのでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう