第9回 課題解答

1 : アクセスの制限、セッタ

public class Main {
  public static void main(String[] args) {
    Student student = new Student();
    // 自己紹介
    student.introduce();
    // 情報の変更
    student.setName("和島茂");
    student.setCampus("青森");
    student.setGrade(2);
    student.setId(3124000);
    // 自己紹介
    student.introduce();
  }
}
 
// 学生のクラス
class Student {
  // フィールド
  private String name; // 名前
  private String campus; // 所属キャンパス
  private int grade; // 学年
  private int id; // 学籍番号
 
  // 引数なしコンストラクタ
  Student() {
    name = "未定";
    campus = "未定";
    grade = 0;
    id = 0;
  }
 
  // 自己紹介
  void introduce(){
    System.out.print("私は" + name + "です。");
    System.out.print(campus + "キャンパスの" + grade + "年生です。");
    System.out.println("学籍番号は" + id + "です。");
  }
 
  // セッタ (setter)
  void setName(String name){
    this.name = name;
  }
  void setCampus(String campus){
    this.campus = campus;
  }
  void setGrade(int grade){
    this.grade = grade;
  }
  void setId(int id){
    this.id = id;
  }
}
実行結果

2 : 許容条件の設定

public class Main {
  public static void main(String[] args) {
    Student student = new Student();
    // 自己紹介
    student.introduce();
    // 情報の変更
    student.setName("和島茂");
    student.setCampus("大阪");
    student.setCampus("青森");
    student.setGrade(20);
    student.setGrade(2);
    student.setId(3124000);
    // 自己紹介
    student.introduce();
  }
}
 
// 学生のクラス
class Student {
  // フィールド
  private String name; // 名前
  private String campus; // 所属キャンパス
  private int grade; // 学年
  private int id; // 学籍番号
 
  // 引数なしコンストラクタ
  Student() {
    name = "未定";
    campus = "未定";
    grade = 0;
    id = 0;
  }
 
  // 自己紹介
  void introduce() {
    System.out.print("私は" + name + "です。");
    System.out.print(campus + "キャンパスの" + grade + "年生です。");
    System.out.println("学籍番号は" + id + "です。");
  }
 
  // セッタ (setter)
  void setName(String name) {
    this.name = name;
    System.out.println("名前を" + name + "に変更しました。");
  }
 
  void setCampus(String campus) {
    // campusが"青森", "むつ", "東京"なら反映させる
    if (campus.equals("青森") || campus.equals("むつ") || campus.equals("東京")) {
      this.campus = campus;
      System.out.println("所属キャンパスを" + campus + "に変更しました。");
    } else {
      System.out.println("所属キャンパスは青森、むつ、東京のいずれかを指定してください。");
    }
  }
 
  void setGrade(int grade) {
    // gradeが1~4の範囲なら反映させる
    if (grade >= 1 && grade <= 4) {
      this.grade = grade;
      System.out.println("学年を" + grade + "に変更しました。");
    } else {
      System.out.println("学年は1~4の範囲で指定してください。");
    }
  }
 
  void setId(int id) {
    this.id = id;
    System.out.println("学籍番号を" + id + "に変更しました。");
  }
}
実行結果

3 : ゲッタ

public class Main {
  public static void main(String[] args) {
    Student student = new Student();
    // 情報の変更
    student.setName("和島茂");
    student.setCampus("青森");
    student.setGrade(2);
    student.setId(3124000);
    // フィールドを取得して表示
    System.out.println("名前: " + student.getName());
    System.out.println("所属キャンパス: " + student.getCampus());
    System.out.println("学年: " + student.getGrade());
    System.out.println("学籍番号: " + student.getId());
  }
}
 
// 学生のクラス
class Student {
  // フィールド
  private String name; // 名前
  private String campus; // 所属キャンパス
  private int grade; // 学年
  private int id; // 学籍番号
 
  // 引数なしコンストラクタ
  Student() {
    name = "未定";
    campus = "未定";
    grade = 0;
    id = 0;
  }
 
  // 自己紹介
  void introduce() {
    System.out.print("私は" + name + "です。");
    System.out.print(campus + "キャンパスの" + grade + "年生です。");
    System.out.println("学籍番号は" + id + "です。");
  }
 
  // セッタ (setter)
  void setName(String name) {
    this.name = name;
    System.out.println("名前を" + name + "に変更しました。");
  }
 
  void setCampus(String campus) {
    // campusが"青森", "むつ", "東京"なら反映させる
    if (campus.equals("青森") || campus.equals("むつ") || campus.equals("東京")) {
      this.campus = campus;
      System.out.println("所属キャンパスを" + campus + "に変更しました。");
    } else {
      System.out.println("所属キャンパスは青森、むつ、東京のいずれかを指定してください。");
    }
  }
 
  void setGrade(int grade) {
    // gradeが1~4の範囲なら反映させる
    if (grade >= 1 && grade <= 4) {
      this.grade = grade;
      System.out.println("学年を" + grade + "に変更しました。");
    } else {
      System.out.println("学年は1~4の範囲で指定してください。");
    }
  }
 
  void setId(int id) {
    this.id = id;
    System.out.println("学籍番号を" + id + "に変更しました。");
  }
 
  // ゲッタ (getter)
  String getName() {
    return name;
  }
 
  String getCampus() {
    return campus;
  }
 
  int getGrade() {
    return grade;
  }
 
  int getId() {
    return id;
  }
}
実行結果

4 : メソッドのオーバーロード

public class Main {
  public static void main(String[] args) {
    Student student = new Student();
    // 情報の変更
    student.changeInfo("和島茂", "青森");
    student.changeInfo(2, 3124000);
    // フィールドを取得して表示
    System.out.println("名前: " + student.getName());
    System.out.println("所属キャンパス: " + student.getCampus());
    System.out.println("学年: " + student.getGrade());
    System.out.println("学籍番号: " + student.getId());
  }
}
 
// 学生のクラス
class Student {
  // フィールド
  private String name; // 名前
  private String campus; // 所属キャンパス
  private int grade; // 学年
  private int id; // 学籍番号
 
  // 引数なしコンストラクタ
  Student() {
    name = "未定";
    campus = "未定";
    grade = 0;
    id = 0;
  }
 
  // 自己紹介
  void introduce() {
    System.out.print("私は" + name + "です。");
    System.out.print(campus + "キャンパスの" + grade + "年生です。");
    System.out.println("学籍番号は" + id + "です。");
  }
 
  // 情報変更 (名前とキャンパス)
  void changeInfo(String name, String campus){
    setName(name);
    setCampus(campus);
  }
 
  // 情報変更 (学年と学籍番号)
  void changeInfo(int grade, int id){
    setGrade(grade);
    setId(id);
  }
 
  // セッタ (setter)
  void setName(String name) {
    this.name = name;
    System.out.println("名前を" + name + "に変更しました。");
  }
 
  void setCampus(String campus) {
    // campusが"青森", "むつ", "東京"なら反映させる
    if (campus.equals("青森") || campus.equals("むつ") || campus.equals("東京")) {
      this.campus = campus;
      System.out.println("所属キャンパスを" + campus + "に変更しました。");
    } else {
      System.out.println("所属キャンパスは青森、むつ、東京のいずれかを指定してください。");
    }
  }
 
  void setGrade(int grade) {
    // gradeが1~4の範囲なら反映させる
    if (grade >= 1 && grade <= 4) {
      this.grade = grade;
      System.out.println("学年を" + grade + "に変更しました。");
    } else {
      System.out.println("学年は1~4の範囲で指定してください。");
    }
  }
 
  void setId(int id) {
    this.id = id;
    System.out.println("学籍番号を" + id + "に変更しました。");
  }
 
  // ゲッタ (getter)
  String getName() {
    return name;
  }
 
  String getCampus() {
    return campus;
  }
 
  int getGrade() {
    return grade;
  }
 
  int getId() {
    return id;
  }
}
実行結果

5 : 引数ありコンストラクタ

public class Main {
  public static void main(String[] args) {
    // インスタンス生成
    Student student0 = new Student();
    Student student1 = new Student("和島茂", "青森", 2, 3124000);
    // 自己紹介
    student0.introduce();
    student1.introduce();
  }
}
 
// 学生のクラス
class Student {
  // フィールド
  private String name; // 名前
  private String campus; // 所属キャンパス
  private int grade; // 学年
  private int id; // 学籍番号
 
  // デフォルトコンストラクタ
  Student() {
    setName("名無し");
    setCampus("青森");
    setGrade(1);
    setId(0);
  }
 
  // コンストラクタ
  Student(String name, String campus, int grade, int id) {
    setName(name);
    setCampus(campus);
    setGrade(grade);
    setId(id);
  }
 
  // 自己紹介
  void introduce() {
    System.out.print("私は" + name + "です。");
    System.out.print(campus + "キャンパスの" + grade + "年生です。");
    System.out.println("学籍番号は" + id + "です。");
  }
 
  // 情報変更 (名前とキャンパス)
  void changeInfo(String name, String campus) {
    setName(name);
    setCampus(campus);
  }
 
  // 情報変更 (学年と学籍番号)
  void changeInfo(int grade, int id) {
    setGrade(grade);
    setId(id);
  }
 
  // セッタ (setter)
  void setName(String name) {
    this.name = name;
    System.out.println("名前を" + name + "に変更しました。");
  }
 
  void setCampus(String campus) {
    // campusが"青森", "むつ", "東京"なら反映させる
    if (campus.equals("青森") || campus.equals("むつ") || campus.equals("東京")) {
      this.campus = campus;
      System.out.println("所属キャンパスを" + campus + "に変更しました。");
    } else {
      System.out.println("所属キャンパスは青森、むつ、東京のいずれかを指定してください。");
    }
  }
 
  void setGrade(int grade) {
    // gradeが1~4の範囲なら反映させる
    if (grade >= 1 && grade <= 4) {
      this.grade = grade;
      System.out.println("学年を" + grade + "に変更しました。");
    } else {
      System.out.println("学年は1~4の範囲で指定してください。");
    }
  }
 
  void setId(int id) {
    this.id = id;
    System.out.println("学籍番号を" + id + "に変更しました。");
  }
 
  // ゲッタ (getter)
  String getName() {
    return name;
  }
 
  String getCampus() {
    return campus;
  }
 
  int getGrade() {
    return grade;
  }
 
  int getId() {
    return id;
  }
}
実行結果

6 : クラス変数・クラスメソッド

public class Main {
  public static void main(String[] args) {
    // インスタンス生成
    Student student0 = new Student();
    // 学生数を表示
    Student.printCount();
    Student student1 = new Student("和島茂", "青森", 2, 3124000);
    // 学生数を表示
    Student.printCount();
 
    // 自己紹介
    student0.introduce();
    student1.introduce();
  }
}
 
// 学生のクラス
class Student {
  // フィールド
  private String name; // 名前
  private String campus; // 所属キャンパス
  private int grade; // 学年
  private int id; // 学籍番号
 
  // クラス変数
  private static int count = 0;
 
  // クラスメソッド
  static void printCount() {
    System.out.println("学生は" + count + "人です。");
  }
 
  // デフォルトコンストラクタ
  Student() {
    setName("名無し");
    setCampus("青森");
    setGrade(1);
    setId(0);
    count++;
  }
 
  // コンストラクタ
  Student(String name, String campus, int grade, int id) {
    setName(name);
    setCampus(campus);
    setGrade(grade);
    setId(id);
    count++;
  }
 
  // 自己紹介
  void introduce() {
    System.out.print("私は" + name + "です。");
    System.out.print(campus + "キャンパスの" + grade + "年生です。");
    System.out.println("学籍番号は" + id + "です。");
  }
 
  // 情報変更 (名前とキャンパス)
  void changeInfo(String name, String campus) {
    setName(name);
    setCampus(campus);
  }
 
  // 情報変更 (学年と学籍番号)
  void changeInfo(int grade, int id) {
    setGrade(grade);
    setId(id);
  }
 
  // セッタ (setter)
  void setName(String name) {
    this.name = name;
    System.out.println("名前を" + name + "に変更しました。");
  }
 
  void setCampus(String campus) {
    // campusが"青森", "むつ", "東京"なら反映させる
    if (campus.equals("青森") || campus.equals("むつ") || campus.equals("東京")) {
      this.campus = campus;
      System.out.println("所属キャンパスを" + campus + "に変更しました。");
    } else {
      System.out.println("所属キャンパスは青森、むつ、東京のいずれかを指定してください。");
    }
  }
 
  void setGrade(int grade) {
    // gradeが1~4の範囲なら反映させる
    if (grade >= 1 && grade <= 4) {
      this.grade = grade;
      System.out.println("学年を" + grade + "に変更しました。");
    } else {
      System.out.println("学年は1~4の範囲で指定してください。");
    }
  }
 
  void setId(int id) {
    this.id = id;
    System.out.println("学籍番号を" + id + "に変更しました。");
  }
 
  // ゲッタ (getter)
  String getName() {
    return name;
  }
 
  String getCampus() {
    return campus;
  }
 
  int getGrade() {
    return grade;
  }
 
  int getId() {
    return id;
  }
}
実行結果