クラスの継承について

このQ&Aのポイント
  • Javaの勉強をしている際に、クラスの継承について困っています。
  • 現在のソースコードには不足や余分なものがあり、どのように継承させるかがポイントです。
  • 具体的には、継承元クラスと継承先クラスの関係を考えながらプログラム開発を進めていきたいと思っています。
回答を見る
  • ベストアンサー

クラスの継承について

現在JAVAの勉強をエクリプスの環境で行っています。 クラス等の勉強を行っているのですが 下記のメインソースで、UTF8のテキストデータを1行ずつ読み込んで 書き込むように設定しております。 import java.io.*; class streamTest5{ public static void main(String[] args) { try { //(1) String str; //(2)FileInputStreamオブジェクトの生成 FileInputStream test_in = new FileInputStream ("c:\\tmp\\UTF8\\src\\test_in.txt"); //(3)FileOutputStreamオブジェクトの生成 FileOutputStream test_out = new FileOutputStream ("c:\\tmp\\UTF8\\src\\test_out.txt"); //(4)InputStreamReaderオブジェクトの生成 InputStreamReader in = new InputStreamReader(test_in, "UTF-8"); BufferedReader in_b = new BufferedReader(in); //(5)バッファで1行ずつ読み込む //(6)OutputStreamWriterオブジェクトの生成 OutputStreamWriter out = new OutputStreamWriter(test_out, "UTF-8"); BufferedWriter out_b = new BufferedWriter(out); //(7)バッファで1行ずつ書き込む //int contents; //(6) //(8)読み込むデータがなくなるまで読み込み // while ((contents = in.read()) != -1) { //(9)書き込むデータがなくなるまで書き込み // out.write(contents); //} while((str = in_b.readLine()) != null) { out_b.write(str); out_b.newLine(); } //(10)nullまでループさせる in_b.close(); //(11)バッファ読み込みを閉じる out_b.close();//(12)バッファ書き込みを閉じる in.close(); //(13)読み込みストリームを閉じる out.close(); //(14)書き込みストリームを閉じる } catch(IOException e) { } } } 次に子クラスで、まだ手探りというか途中段階なのですが 読み込むテストテキストデータに合わせて作成中です。 実際行いたい、イメージが 13セル(フィールド)ある100件のデータベースを UTF8で読み込んで 例えばedit0でからedit5までのフィールドで 最終件数までループさせ 郵便番号・住所漢字・氏名漢字・抽出年月日・予備等を抽出して 最終的にはEditごとにプログラム開発を行いたいのですが クラスの継承が参考書等を見て色々と作業しているのですが 分からずつまずいています。 現在の下記のソースは不足しているのはもちろんのこと 余計なものも あると思いますし 途中段階です。 このようなソースの場合、どのようなとこから 継承させるのがポイントになるのでしょうか?? アドバイスいただけると助かります。 ちなみにEditごとの中身はシステムアウトで確認できる ソースしか書いてません。 情報や、説明不足もあると思いますので ご指摘いただければと思います。 また作業するには早いのかもしれませんが すこしでも手がかりがあると それについて勉強できるかと思い ご質問しました。 すいませんがどうぞよろしくお願いいたします。 public class tmp_1 extends streamTest5 { private tmp_1(String[] args) { ThisTest test = new ThisTest(); test.Edit0(); test.Edit1(); test.Edit2(); test.Edit3(); test.Edit4(); { //for ( int i = 0; i < field.length; ++i ) { // field[i] = "データ_" + i;} } } public class ThisTest{ String[] inData = new String[13];{ inData[0] = "基礎年金番号"; inData[1] = "年金コード"; inData[2] = "氏名カナ"; inData[3] = "氏名漢字"; inData[4] = "郵便番号"; inData[5] = "住所カナ"; inData[6] = "住所漢字"; inData[7] = "住民票収録状況表示"; inData[8] = "住所突合結果コード"; inData[9] = "住民票住所漢字"; inData[10] = "抽出年月日"; inData[11] = "基礎年金番号"; inData[12] = "予備"; } void Edit0() { System.out.println(String.format(("*") + inData[0] + "*")); ///System.out.println(this.field11 + "予備"); } void Edit1() { System.out.println(inData[11]); //System.out.println(this.field11 + "予備"); } void Edit2() { System.out.println(inData[2]); } void Edit3() { System.out.println(inData[7]); } void Edit4() { System.out.println(inData[7]); } }}

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

> >・親クラスと子クラスで共通すること(目的とか処理手順とか)は何ですか? > 毎回共通することは、UTF8のテキストデータを読み書きしながら > プログラム開発することです。 こちらの意図していた答えとはちょっと方向性が違ってしまったようです。 たとえば、「"次のデータをファイルから1件読み出す→その1件のデータを加工する→加工した1件のデータをファイルに書き出す"という作業を読み出すデータがなくなるまで繰り返す」という手順は親子で共通なのだけれど、「次のデータをファイルから1件読み出す」の具体的なやり方を親子で変えたい…のように考えてください。 > 親クラスでreadData()というインスタンスメソッドを作りというのは > なにかソースを追加してフラッグを立てるということでしょうか?? ソースを追加というか、元のコード(親クラス・子クラスとも)は跡形をとどめないくらいに再構成が必要でしょうね。 まずはJavaのインスタンスメソッドとそのオーバーライドについて調べてみてください。 そもそも、示されているコードを眺める限り親子で共通にできそうな要素が見つけられないので、果たしてこれは継承に向いているのだろうかという印象を持ちます。 > まだ足らないもしくはこのあたりが課題というようなことがあれば 申し訳ありませんが、何度読み返しても子クラスで何をやろうとしているのかが文章やコードからさっぱり読み取れないので、助言はできません。

yairi1106
質問者

お礼

分かりやすくコメントを追加してみました。 現在は単体でシステムアウトで結果をチェックできる感じです。 あとは文字列や(カンマ)を分割できる splitメソッドを考えなくては(その他含めて)入出力メインクラスと一緒には 機能しないと思いますが・・・ class Chap11Ex3{ public static void main(String[] args) { ThisTest test = new ThisTest(); //************************************************************************************************* //出力データ //************************************************************************************************* test.Edit0(); //郵便番号 test.Edit1(); //住所 test.Edit2(); //氏名 test.Edit3(); //連続番号 test.Edit4(); //カスタマーバーコード test.Edit5(); //QRコード //System.out.println(test.name + "����A���悤�Ȃ�"); } } //************************************************************************************************* //入力データ //************************************************************************************************* class ThisTest{ String[] inData = new String[13];{ inData[0] = "基礎年金番号"; inData[1] = "年金コード"; inData[2] = "氏名カナ"; inData[3] = "氏名漢字"; inData[4] = "生年月日"; inData[5] = "郵便番号"; inData[6] = "住所カナ"; inData[7] = "住所漢字"; inData[8] = "住民票収録状況表示"; inData[9] = "住所突合結果コード"; inData[10] = "住民票住所漢字"; inData[11] = "抽出年月日"; inData[12] = "予備"; } //************************************************************************************************* //fieldprogramsSTART //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //************************************************************************************************* //郵便番号編集 //************************************************************************************************* void Edit0() { //(function_5)郵便番号if判定 String score = "12100 1345"; if (score.substring(3,5).compareTo ("00") == 0 && score.substring(5,7).compareTo (" ") == 0) { System.out.println(score.substring(0,3) + "-"); //4桁目5桁目00の場合なおかつ6桁目7桁目が" "の時左から1.2.3桁抽出+ハイフン } else if (score.substring(7,9).compareTo (" ") == 0) { System.out.println(score.substring(0,3) + "-" + (score.substring(3,5))); //6桁目7桁目" "の場合左から1.2.3桁抽出+ハイフン+4.5桁目抽出 } else { System.out.println(score.substring(0,3) + "-" + (score.substring(3,7)));} //それ以外左から3桁抽出+ハイフン+4.5.6.7桁目抽出 } //************************************************************************************************* //住所編集 //************************************************************************************************* void Edit1() { String 住所漢字 = "東京都江東区潮見2-4-8"; System.out.println(住所漢字); } //************************************************************************************************* //氏名編集 //************************************************************************************************* void Edit2() { String 氏名漢字 = "潮見太郎"; System.out.println(String.format(("*") + 氏名漢字 + "*")); //System.out.println(this.name + "����A����ɂ���"); } //************************************************************************************************* //連続番号編集 //************************************************************************************************* void Edit3() { String 連続番号 = "00001"; System.out.println(String.format(連続番号)); //System.out.println(this.name + "����A����ɂ���"); } //************************************************************************************************* //カスタマーバーコード編集 //************************************************************************************************* void Edit4() { String カスタマーバーコード = "27900021-1-1"; System.out.println(String.format(カスタマーバーコード)); //System.out.println(this.name + "����A����ɂ���"); } //************************************************************************************************* //QRコード編集 //************************************************************************************************* void Edit5() { String 基礎コード = "1234567890"; String 年金番号= "12345"; String 管理番号 = 基礎コード + 年金番号; System.out.println("D" + 管理番号);//resの出力

yairi1106
質問者

補足

アドバイスありがとうございます。 子クラスに関してはわかりにくくて申し訳ございません。 単体で考えると下記のような感じです。 例えばfunction_1では、セルの情報に対して情報を付加させる コードだったり function_3では文字列の抽出を行ったりして システムアウトできればといった感じです。 アドバイス通りJavaのインスタンスメソッドとそのオーバーライドについて さらに色々と調べてみます。 class test1 { public static void main(String[] args) { //************************************************************************************************ // 各フィールドテストプログラム開発 //************************************************************************************************ //(function_1)アスタリスクを前後付加 String str = "1234567890"; System.out.println(String.format(("*") + str + "*")); //(function_2)15桁の数値から10桁の数値を差し引いて算出 //10桁以上の数値は「longの後にl L・数値の後にもl Lを設定 long l = 123456789012345l; long tmp = 1234567890; System.out.println( l - tmp); //(function_3)文字列の抽出 String mid = "1234567890"; System.out.println(String.format("取り出し前の文字列 : %s", mid)); System.out.println("文字列の3文字目から7文字目を取り出す -> " + mid.substring(2,7)); System.out.println("文字列の2文字目から2文字目を取り出す -> " + mid.substring(1,2)); System.out.println("文字列の3文字目から3文字分を取り出す -> " + mid.substring(2,2+3)); //(function_4)switch判定 String[] array = new String[3];{ array[0] = "基礎年金番号"; array[1] = "年金コード"; array[2] = "氏名カナ"; for ( int i = 0; i < array.length; ++i ) { array[i] = "データ_" + i; } switch ("基礎年金番号") { //(2) //(3)該当するcase値の文を実行 case "基礎年金番号": System.out.println("当選!"); break; default: System.out.println("はずれです。"); break; } } //(function_5)郵便番号if判定 String score = "12100 1345"; if (score.substring(3,5).compareTo ("00") == 0 && score.substring(5,7).compareTo (" ") == 0) { System.out.println(score.substring(0,3) + "-"); //4桁目5桁目00の場合なおかつ6桁目7桁目が" "の時左から1.2.3桁抽出+ハイフン } else if (score.substring(7,9).compareTo (" ") == 0) { System.out.println(score.substring(0,3) + "-" + (score.substring(3,5))); //6桁目7桁目" "の場合左から1.2.3桁抽出+ハイフン+4.5桁目抽出 } else { System.out.println(score.substring(0,3) + "-" + (score.substring(3,7))); //それ以外左から3桁抽出+ハイフン+4.5.6.7桁目抽出 } } }

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

tmp_1の親クラスであるstreamTest5にはstaticメソッドが1つあるだけです。このままでは、このクラスを継承する意味はありません。 「同じメソッド名だけど親クラスと子クラスで挙動が違う」ということをさせたいのであれば、その部分をインスタンスメソッドにする必要があります。 質問文やコードを見てもよく分からないのですが、何のためにクラスの継承をしたいのですか? ・親クラスと子クラスで共通すること(目的とか処理手順とか)は何ですか? ・親クラスと子クラスで、処理内容を変えたいことは何ですか? たとえば「親クラスではテキストファイルから1行ずつデータを読み込んでいたのを、子クラスではデータベースから1件ずつ読み込むようにしたい。データを読み込んだ後の処理手順は親子で共通化できる。」というような話なら、親クラスでreadData()というインスタンスメソッドを作り、子クラスでそのメソッドをオーバーライドします。

yairi1106
質問者

補足

アドバイスどうもありがとうございます。 >質問文やコードを見てもよく分からないのですが、何のためにクラスの継承をしたいのですか? まずは継承を理解するためとエラー処理する際、混乱を避けるためです。 自分の中で、クラスを継承させて管理したほうが エラーも見つけやすいかと。 例えば、1メインのルーチンでUTF8読み書き 2、各セルごとのプログラム開発 3、仕様定義出力レコード数や一時ワークスペース定義等です。 (たまに使用するソースをコメント扱いで待機させておいて使用する際 別の子クラスに継承させたほうがわかりやすくなります。) >・親クラスと子クラスで共通すること(目的とか処理手順とか)は何ですか? 毎回共通することは、UTF8のテキストデータを読み書きしながら プログラム開発することです。 >・親クラスと子クラスで、処理内容を変えたいことは何ですか? 子クラスでは、毎回違う仕様のテキストデータ処理を行うことです。 >たとえば「親クラスではテキストファイルから1行ずつデータを読み込んでいたのを、子クラスではデータベースから1件ずつ読み込むようにしたい。データを読み込んだ後の処理手順は親子で共通化できる。」というような話なら、 salsberryさんの例に挙げていただいた通りです。 現在はVBで処理をおこなっているのですが JAVAのように1件1件読み書きできる関数がなく 大量の件数だとオーバーフローしてしまうのです。 それとオブジェクト指向のほうが、今後開発の幅が広がると思い 現在勉強中です。 >親クラスでreadData()というインスタンスメソッドを作り、子クラスでそのメソッドをオーバーライドします。 VBの概念のイメージでは、頭の中にあるのですが JAVAが初心者な分、なかなかうまくいかず色々と手探りで作業してます。 親クラスでreadData()というインスタンスメソッドを作りというのは なにかソースを追加してフラッグを立てるということでしょうか?? それと今後、子クラスだけを見ていただいたときセルごとの開発をして テキストアウトしたデータの内容を(セル抽出・情報付加等)変えるうえで まだ足らないもしくはこのあたりが課題というようなことがあれば ご指摘いただけると非常に助かります。 どうぞよろしくお願いいたします。

関連するQ&A

  • 継承について

    以下のような問題(SJC-P試験)があり、 解説では考え方として ●メンバがフィールドなら「変数の型」 ●インスタンスメソッドなら「実際のオブジェクトの型」 ●クラスメソッドなら「変数の型」 とありました。 できればなぜこのような考え方(法則)になるか理解したいと思っています。 #当方、Javaプログラミング経験ゼロで、実際に下記のようなコーディングをするかどうかもわかりませんが、 #丸暗記だと実際のコーディングで使えそうにないので、できれば理解したいと思ってます。 下記問題は解説の考え方さえ丸暗記すれば解けるのかもしれませんが (なぜ解説のような考え方になるのか含め)教えていただけませんでしょうか。 ----- 【問題1】 class Super{  int d = 10;  void meth()System.out.println(d); } class Sub extends Super{  double d = 20.0;  void meth()System.out.println(d); } class Sample1{  public static void main(String[] args){  Super s = new Sub();  System.out.println(s.d);  s.meth(); } 【答え】 10 20.0 ----- 【問題2】 class Super{  static int d = 10;  static void meth()System.out.println(d); } class Sub extends Super{  static double d = 20.0;  static void meth()System.out.println(d); } class Sample2{  public static void main(String[] args){  Super s = new Sub();  System.out.println(s.d);  s.meth(); } 【答え】 10 10 ----- よろしくお願い致します。

    • ベストアンサー
    • Java
  • Integer クラスについて教えて下さい

     今晩は、java初心者です、宜しくお願いします。    Integerクラスについて下のように「i1 = new Integer("1");」と書いても「i2 = new Integer(1);」 と書いても、どちらも数字として認識されているようです。  正式な書き方としてはどちらなんでしょうか、宜しくお願いします。 ========================================================================= public class Test1 { public static void main(String[] args) { Integer i1 = new Integer("1"); System.out.println((i1+2)); Integer i2 = new Integer(1); System.out.println((i2+3)); } }

    • ベストアンサー
    • Java
  • 親クラスと子クラスのフィールドとメソッドについて

    親クラスと子クラスのフィールドとメソッドについて 以下のサンプルソースを実行した時の動作の原理について 教えてください。 oya型変数にkoクラスのインスタンスを作成した場合、 メソッドはkoクラスのものなのに、 フィールドはoyaクラスのものになるということが イマイチすっきり理解できません。 どういうことなんでしょうか。 ------------------------------------------------------- [ソース] public class exec { public static void main( String args[]){ oya obj = new ko(); System.out.println(obj.str_field); obj.disp_field(); } } public class oya{ String str_field="親実行"; public void disp_field(){ System.out.println(str_field); } } public class ko extends oya { String str_field = "子実行"; public void disp_field(){ System.out.println(str_field); } } ------------------------------------------------------- [実行結果] > 親実行 > 子実行 -------------------------------------------------------

    • ベストアンサー
    • Java
  • ArrayListを使ったクラスの作成の仕方

    次のプログラム、どこが間違っているのでしょうか? コンパイルは通るのですが、実行しようとすると ずら~っとエラーが出てしまいます。 (例)at java.lang.ClassLoader.defineClass1(Native Method) at java.security.SecureClassLader.defineClass..... at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) ********************************************************** package siryou; import java.util.ArrayList; import java.io.*; class Info { private String name; private String age; private String nationality; public void setName(String nm) { name = nm; } public void setAge(String a) { age = a; } public void setNationality(String nt) { nationality = nt; } public void show(String j) { System.out.println("「名前=" + name + "」"); System.out.println("「年齢=" + age + "」"); System.out.println("「国籍=" + nationality + "」"); } } class Kojinjyoho02 { public static void main(String args[])throws IOException { System.out.println("何回入力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); Info in = new Info(); ArrayList list = new ArrayList(); for(int i =0; i < res; i++){ System.out.println("名前は?"); str = br.readLine(); in.setName(str); System.out.println("年齢は?"); str = br.readLine(); in.setAge(str); System.out.println("国籍は?"); str = br.readLine(); in.setNationality(str); list.add(in); } for(int j=0; j < list.size(); j++){ String jyoho = (String)list.get(j); in.show(jyoho); } } }

    • ベストアンサー
    • Java
  • java ファイル操作

    現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする ものを作成しています。 現状のコードはこのような感じです。 class addresskensaku{ public static void main(String[] args)throws IOException{ System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); //1が選択された場合 if(res == '1' || res == '1'){ System.out.println("名前を入力してください。"); BufferedReader fn = new BufferedReader(new InputStreamReader(System.in)); String str1 = fn.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 System.out.println("検索結果 :"); while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[0].indexOf(str1) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //2が入力された場合 if(res == '2' || res == '2'){ System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String ol = o.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp =null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //完全一致 if (ol.equals(words[1])){ // System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //3が入力された場合 if(res == '3' || res == '3'){ System.out.println("出身地を入力してください。"); BufferedReader p = new BufferedReader(new InputStreamReader(System.in)); String pref = p.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[2].indexOf(pref) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //4が入力された場合 追加 if(res == '4' || res == '4'){ //氏名入力 System.out.println("氏名を入力してください。"); BufferedReader n = new BufferedReader(new InputStreamReader(System.in)); String str2 = n.readLine(); //年齢入力 System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String str3 = o.readLine(); //住所入力 System.out.println("住所を入力してください。"); BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); String str4 = a.readLine(); //ファイルに書き込み try{ File file = new File("addressdata.txt"); FileWriter filewriter = new FileWriter(file, true); filewriter.write(str2+","+str3+","+str4+"\r\n"); filewriter.close(); }catch(IOException e){ System.out.println("e"); } } } } これをカプセル化し 各機能ごとにメソッドを分けて作ろうかなと思っています。 結果の出力はmainでやる予定です。

  • Javaのプログラムについて教えてください!

    //Sub.java package prac; class Super{ public void A(){ String address = new String("Osaka"); System.out.println(address); } } public class Sub extends Super{ public void A(){ String address = new String("Kyoto"); System.out.println(address); } public int A(String tmp){ return Integer.parseInt(tmp); } } このプログラムを他のクラスのmain関数から呼び出す場合どのようなコードになりますか?また、間違えているところがあれば合わせて教えてください。

    • ベストアンサー
    • Java
  • privateなフィールドは継承されない?

    たとえば、 class A { private int width; public A(){ this.width=3; } public int getWidth(){ return width; } public void setWidth(int width){ this.width=width; } } -------------------------------- class B extends A { String name; public B(){ this.name="あきら"; } } -------------------------------- class TestAB{ public static void main(String[] args){ B b = new B(); B b2= new B(); System.out.println(b.getWidth()); b2.setWidth(5); System.out.println(b2.getWidth()); System.out.println(b.getWidth()); } } というのがあったとして、ある参考書では「privateなフィールドは継承されない」と書いてありました。 でも、これってwidthに直接アクセスして値を変更できないだけであって、 widthは継承されてるのではないですか? B型のb専用、b2専用のwidthがあるのではないですか? ちょっと頭がこんがらがってきました。。

    • ベストアンサー
    • Java
  • Exceptionクラスの継承について

    Exceptionクラスを継承しているExceptionMがありますが、その中にsuper(message)というものがあります。 これは、スーパークラスのExceptionがmessageという変数を引数で受けることができるメソッドを使用していることは分かりますが、実際何を行っているのでしょうか? そして、この処理によって何を得ているのでしょうか? あと、try{のなかにtry{という変な記述していますが、問題でそうかかれていただけなので気にしないでください。 問題箇所 class ExceptionM extends Exception{ public ExceptionM(String message){ super(message); } } 全ソース class ExceptionSubclassQuestion{ public static void main(String args[]){ a(); } static void a(){ try{ try{ throw new ExceptionM("M"); }catch(ExceptionN e){ System.out.println("lnner catch"); e.printStackTrace(); } }catch(ExceptionM e){ System.out.println("Quter catch"); e.printStackTrace(); } } } class ExceptionM extends Exception{ public ExceptionM(String message){ super(message); } } class ExceptionN extends ExceptionM{ public ExceptionN(String message){ super(message); } }

    • ベストアンサー
    • Java
  • GetterとSetterをやったのに。

    以下のプログラムを実行すると、フィールドA.aは不可視です。メソッドtestは型Aで不可視です。というエラーが出てきます。本に書いてあるとおり、やったのですが、どうしてダメなのかわかりません。ぜひ教えてください。 public class Sample { public static void main(String[] args) { A aa=new A(); System.out.println(aa.a); aa.test(); } } class A{ private String a = "A"; private void test(){ System.out.println("Test"); } public String getA() { return a; } public void setA(String a) { this.a = a; } }

    • ベストアンサー
    • Java
  • java 入力命令

    以下うまくどうさしません、教えてください。 public class Main { public static void main(String[] args){ System.out.println("名前"); String name = new java.util.Scanner(System.in) .nextLine(); System.out.println("年齢"); int age = new java.util.Scanner(System.in) .nextInt(); System.out.println (age + name); } }

専門家に質問してみよう