重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

public class Person{
public String name_ ;
public int age_ ;

public Person(){
name_ = "Asaya";
age_ = 61;
}
}

public class Student{
public Person person_;
public int grade_;

public Student(){
person_.name_ = "Moto";
person_.age_ =2;
grade_ = 0;
}
}

public class SamConp1{
public static void main(String[] args){
Person person_ = new Person();
Student asaya_ = new Student();

System.out.println(asaya_.person_.name + asaya_.person_.age_+asaya_.grade__);
}
}

3つのプログラムを見るようにコンストラクタに引数を使わず、又継承を使わないでPerson クラスのname_ age_ それを拡張したStudetクラスのgrade_をmain関数で表したいのですが(希望としてはname_ "Moto" age_ 2 grade_ 0)
結果としては、
exception in thread "main" java.lang.nullpointerexception
at student.<int>(Student.java:6)
at SamConp1.main(SampConp1.java:4)
となります。
まだ初心者で良く分りません。解決方法をお願いします。

A 回答 (1件)

よく解りませんが、


とりあえず、コンパイル実行できるようにしました。

class Person {

public String name_;
public int age_;

public Person() {
name_ = "Asaya";
age_ = 61;
}
}

class Student {

public Person person_;
public int grade_;

public Student() {
person_ = new Person();
person_.name_ = "Moto";
person_.age_ = 2;
grade_ = 0;
}
}

public class goo_test13 {

public static void main(String[] args) {

Student asaya_= new Student();

System.out.println(asaya_.person_.name_+" "+asaya_.person_.age_+" "+asaya_.grade_);


}

}

実行結果

Moto 2 0

作り方にもよるのですけど、
class Person、class Student はpublicを外しています。
一つのJavaファイルに書くと、外さないとエラーになります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。引数のないコンストラクタでは分りましたが、今度は引数がある場合のコンポジションについて考えて見ましたが分りませんので、今度は引数がある場合について投稿しました。解決できましたらご回答願います。
ありがとうございました。

お礼日時:2010/01/03 18:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!