0

クラスのすべての属性を表示する必要がある課題があります。

私の質問は、人物オブジェクトに追加の属性を追加せずにコードを機能させるにはどうすればよいですか?

コードは動作するようになりましたが、どうやら元の人物クラスに変更を加えることは想定されていません。それは次のとおりです。

class person
{
String firstName;
String lastName;
int age;

person(String informedFirstName, String informedLastName, int informedAge)
{
    firstName = informedFirstName;
    lastName = informedLastName;
    age = informedAge;
}

String whatIsUp()
{
 return "undetermined";
}
String getName()
{
    return firstName +" "+lastName;
}
String getAge()
{
    String str = String.valueOf(age);
    return str;
}

String getInfo()
{
    return ("Name = "+ getName() + " age="+ getAge());
}
}

私が持っている作業コードは次のとおりです。

アプリクラス

class app

{
  public static void main(String[] args)
 {
student st1 = new student("Zack","Mills",21,".....");
professor p1 = new professor("Fred","Fonseca",44,".....");
TA ta1 = new TA("Paris","Hilton",20,"......");
System.out.println(st1.getInfo());
System.out.println(p1.getInfo());
System.out.println(ta1.getInfo());
 }
}

人物クラス:

class person
{
String firstName;
String lastName;
int age;
    String status;

person(String informedFirstName, String informedLastName, 
int informedAge, String informedStatus) //< ---- added attribute informedStatus
{
    firstName = informedFirstName;
    lastName = informedLastName;
    age = informedAge;
            status = informedStatus;
}

String whatIsUp()
{
 return "undetermined";
}
String getName()
{
    return firstName +" "+lastName;
}
String getAge()
{
    String str = String.valueOf(age);
    return str;
}
    String getStatus(){
        return status;
    }

String getInfo()
{
    return ("Name = "+ getName() + " age="+ getAge()) + getStatus();
}

}

学生クラス:

class student extends person
{
String status;
student(String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
    super(informedFirstName, informedLastName, informedAge, informedStatus);
    if (age <= 25) status = informedStatus = "Traditional";
    else status = informedStatus = "Non-Traditional";
}

String whatIsUp()
{
 int n = 0;
 String b = "..."; 
 n = (int) (Math.random()*2);
 if (n == 0) b = "reading";
 if (n == 1) b = "talking";  
 return b;
}
String getStatus()
{
    return " Status = " + status;
}
}

教授クラス:

class professor extends person
{
String status;
professor(String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
    super(informedFirstName, informedLastName, informedAge, informedStatus);
    status = informedStatus = "Computer Science";
}

String whatIsUp()
{
 int n = 0;
 String b = "..."; 
 n = (int) (Math.random()*2);
 if (n == 0) b = "reading";
 if (n == 1) b = "talking";  
 return b;
}
String getStatus()
{
    return " Degree = " + status;
}
}

TAクラス:

class TA extends person
{
String status;
TA (String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
    super(informedFirstName, informedLastName, informedAge, informedStatus);
    status = informedStatus = "Excellent";
}

String whatIsUp()
{
 int n = 0;
 String b = "..."; 
 n = (int) (Math.random()*2);
 if (n == 0) b = "reading";
 if (n == 1) b = "talking";  
 return b;
}
String getStatus()
{
    return " Communication Skills = " + status;
}
 }

すべてのコードで申し訳ありませんが、助けていただければ幸いです。

4

2 に答える 2

0

person クラスにもう 1 つの属性を追加する際の問題が何であるかはわかりません。ただし、触れたくない場合は、別の方法をお勧めします。

person を拡張するクラス personExtension を作成します。そのクラスに新しいステータス属性を追加します。次に、TA、学生、および教授の新しい personExtension クラスを拡張します。

class personExtension extends person
{
    String status;

personExtension(String informedFirstName, String informedLastName, int informedAge, String informedStatus)
{
    super(informedFirstName,informedLastName,informedAge);
    status = informedStatus;
}
}
于 2013-09-19T21:02:15.490 に答える
0

studen実際には、クラスをextendsから作成し、新しいクラスにperson新しい属性を持たせることで、すべて完了していますstatuspersonこれを行うと、追加された新しいものを含むすべての属性を持つクラスができます。

statusperson から属性を削除し、必要に応じて変更しないでください。

のコンストラクターで、キーワードを使用するstudent属性を渡します。personsuper

student(String informedFirstName, String informedLastName, int informedAge,
        String informedStatus)
{
    super(informedFirstName, informedLastName, informedAge);
    if (age <= 25) status = informedStatus = "Traditional";
    else status = informedStatus = "Non-Traditional";
}

クラスのオブジェクトは、studentすべての属性へのアクセスを提供します

student s = new student("John", "Doe", 25, "some status");

1 つだけ追加します。Java の命名規則を尊重してください。クラス名は大文字で始める必要があります。

編集

ステータスを含む文字列をgetInfo()返すには、サブクラスでそのメソッドをオーバーライドし、キーワード call the fromstudentを使用して、それに連結する必要があります。supergetInfo()personstatus

@Override
String getInfo()
{
    return super.getInfo() + " " + getStatus(); // or jsut: + " " + status;
}
于 2013-09-19T21:10:45.537 に答える