質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

2389閲覧

抽象クラスと継承を使用して配列要素を表示させる

bangaru

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/03/24 05:32

前提・実現したいこと

課の構成を表すプログラムを作成する課題に取り組んでいます。
MemberMainの内容を変更せずに「1」のように表示する課題です。

試したこと

デバックで実行し配列には格納するデータがすべて格納されていることを確認しました。
抽象クラスと継承を一通り調べたのですが全体的に理解できず困っています。

発生している問題・エラーメッセージ

MemberMainを実行して「1」のように表示させたいのですが
「2」のように表示されてしまい、困っています。

「1」 >java MemberMain 従業員番号:E0001 名前:阿川 役職:担当 従業員番号:E0002 名前:井川 勤務時間帯:10:00-20:00 従業員番号:E0003 名前:鵜川 役職:リーダー 従業員番号:E0004 名前:江川 勤務時間帯:09:00-18:00 従業員番号:E0005 名前:小川 役職:課長 従業員番号E9999 の人は見つかりませんでした。 「2」 Permanent@a09ee92PartTime@30f39991Permanent@452b3a41PartTime@4a574795Permanent@f6f4d33

該当のソースコード

java

1public class MemberMain 2{ 3 public static void main(String[] args) 4 { 5 // 従業員の配列を作成 6 Member[] members = new Member[] { 7 new Permanent("E0001", "阿川", "担当"), 8 new PartTime("E0002", "井川", "10:00-20:00"), 9 new Permanent("E0003", "鵜川", "リーダー"), 10 new PartTime("E0004", "江川", "09:00-18:00"), 11 new Permanent("E0005", "小川", "課長"), 12 }; 13 // 作成した従業員が所属するセクションを作成 14 Section section = new Section(members); 15 // 課員の情報を出力 16 section.printMember("E0001"); 17 section.printMember("E0002"); 18 section.printMember("E0003"); 19 section.printMember("E0004"); 20 section.printMember("E0005"); 21 section.printMember("E9999"); 22 } 23} 24 25 26 27abstract class Member //従業員クラス 抽象クラス 28{ 29 private String memberID; //従業員番号 30 private String name; //名前 31 32 public Member(String MemberID, String Name) 33 { 34 memberID = MemberID; 35 name = Name; 36 } 37 38 public String getMemberID() //従業員番号を返却 39 { 40 return memberID; 41 } 42 43 public String getName() //名前を返却 44 { 45 return name; 46 } 47 48 abstract void printDetail(); //従業員の情報をコンソールに出力する抽象メソッド 49 50} 51 52} 53 54class Permanent extends Member //社員クラス Memberを継承 55{ 56 private String appointment; //役職名 57 58 59 public Permanent(String memberID,String name,String Appointment) 60 { 61 super(memberID,name); 62 appointment = Appointment; 63 } 64 65 public void printDetail() //従業員番号と名前と役職をコンソールに出力するメソッド 66 { 67 68 //System.out.println(members[0]); 69 //System.out.println(members[2]); 70 //System.out.println(members[4]); 71 } 72} 73 74class PartTime extends Member //アルバイトクラス Memberを継承 75{ 76 private String workHours; //勤務時間帯 77 78 public PartTime(String memberID,String name,String WorkHours) 79 { 80 super(memberID, name); 81 workHours = WorkHours; 82 } 83 84 public void printDetail() //従業員番号と名前と勤務時間帯をコンソールに出力するメソッド 85 { 86 //System.out.print("a"); 87 } 88} 89 90class Section //課クラス 91{ 92 private Member[] members; 93 94 public Section(Member[] Members) 95 { 96 members = Members;//引数 Mainのmembersから配列を受け取る 97 for(int i=0; i<members.length; i++) 98 { 99 //if(members == "E0001") 100 //{ 101 System.out.print(members[i]); 102 //}eles if(members[i] == "E0002") 103 //{ 104 // System.out.print("OK"); 105 //} 106 //System.out.print(members); 107 } 108 } 109 public void printMember(String memberID) //引数に与えられた従業員番号に該当する従業員を従業員配列から検索しその情報を出力する。出力処理はクラスMemberのprintDetail()メソッドに委譲する。該当する従業員が見つからない場合はその旨を出力する。 110 { 111 //System.out.print("b"); 112 } 113}

###実行環境
コマンドプロンプト
デバックはエクリプスで実行しました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/03/24 05:41

「1」以下が期待する結果、「2」以下が実際の結果ということでよろしいでしょうか。
bangaru

2021/03/24 05:49

そうです
guest

回答1

0

System.out.print(オブジェクト)とした場合、オブジェクト.toString()をした結果が出力されます。

「1」のように表示させたいのですが

今のコードで、どうしてそのように実行されると考えましたか?

投稿2021/03/24 05:42

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問