-2

クラス課題用です。次のコードが与えられます。

public class Person {
private String name;
private int age;

public Person(String n, int a)
{
this.name = n;
this.age = a;
}
public String getName()
{
return name;
}

public int getAge()
{
return age;
}

public void setName(String n)
{
name = n;
}

public void setAge(int a)
{
age = a;
}

public void print( )
{
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}

Person クラスを拡張するこのクラスの print メソッドをオーバーライドする必要があります。

public class CollegeKid extends Person
{
private double gpa;


 public double getGPA()
{
 return gpa;
}

public void setGPA(double g)
{
  gpa = g;
}

public void print( )
{/* your code here */
  }
}

最初のコードのフォーマットについて申し訳ありません。

書いてみた

public void print(){
super.print();
SOP("Name " + name);
SOP("Age " + age);
SOP("GPA " + gpa);}

しかし、それはうまくいきませんでした..

これは私が得るコンパイルエラーです: コンパイルエラー (行 2、列 31): name has private access in inheritanceI.Person コンパイルエラー (行 3、列 30): age has private access in inheritanceI.Person

4

2 に答える 2

4

スーパークラスの機能を利用するには、 を正しく呼び出しますsuper.print();nameおよびage変数はにprivateありPersonます。ただし、名前と年齢を再度印刷する必要はありません。スーパークラス メソッドの呼び出しは、すでにそれを処理しています。System.out.printlnGPA に必要なステートメントは 1 つだけです。

于 2013-04-02T00:27:22.433 に答える
0
CollegeKid kid = new CollegeKid()
kid.set...(...)
kid.print()
于 2013-04-02T00:27:35.530 に答える