練習問題 解答

10.5 練習問題 解答

問1

① ×:Javaでは入出力処理にストリームは欠かせない。
② ○
③ ○
④ ×:クローズ処理を行わないと書き込みファイルへのデータの書き込みが正しく行われません。
⑤ ○

問2

Scanner sin = new Scanner(new File(“test/file/score.csv”));
または
Scanner sin = new Scanner(new File(“test\\file\\score.csv”));

問3

生成される場所: c:\test(cドライブのtestフォルダー)
ファイル名: money.txt

問4

① d. PrintWriter
② b. println
③ a. close()
④ c. File
⑤ e. hasNextLine()

問5

Practice1002.java
  package jp.co.f1.basic.ch10exercise;

  public class Practice1002 {
    public static void main(String[] args) {
      //読み込みファイルの1行データ格納用変数
      String strLine = null;

      //提供クラスのオブジェクト化
      FileIn  in  = new FileIn();
      FileOut out = new FileOut();

      //書き込みファイルのオープン
      if(out.open("practice.txt") == false){
        System.exit(1);
      }

      //文字列の書き込み
      out.writeln("[Java基礎]");
      out.writeln("ファイル入出力の練習問題を実施中!");

      //書き込みファイルのクローズ
      if(out.close() == false){
        System.exit(2);
      }

      //ファイルの読み込み
      if(in.open("practice.txt") == false){
        System.exit(3);
      }

      //繰り返し処理で読み込んだデータ全て読み出す
      while((strLine = in.readLine()) != null){
        System.out.println(strLine);
      }
      //ストリームのクローズ
      if(in.close() == false){
        System.exit(4);
      }
    }
  }
  
クラスの活用方法

既存のクラスの機能を引き継いだ、新しいクラスを作成することができます。
作り方の仕組みの名前や関連する用語について、ここで簡単に紹介しておきます。
それぞれの違いや使い方についてしっかり理解するのはなかなか難しく、また、扱う機会も少ないかも知れませんが、大規模なシステム開発を行うためには欠かせない仕組みになっていますので、今は名前だけでも覚えておいてください。

クラスの拡張(extends)と継承(inheritance)

新しいクラスに既存のクラスの機能を利用できるようにする仕組みのことを「クラスの拡張」と呼び、
機能を受け継ぐことを「継承」と呼びます。
このとき、もとになる既存のクラスはスーパークラス(親クラス)、新しいクラスはサブクラス(子クラス)と呼ばれます。

オーバーライド(override)

スーパークラスのメソッドとメソッド名・戻り値の型・引数の形式が完全に同じであるメソッドをサブクラス内で再定義すること。「同じクラス内で、メソッド名が同じで引数の形式が異なるメソッドを定義すること」を意味するオーバーロード(Overload)とは全く別の概念なので注意してください。スーパークラスのメソッドとメソッド名・戻り値の型・引数の形式が完全に同じであるメソッドをサブクラス内で再定義すること。「同じクラス内で、メソッド名が同じで引数の形式が異なるメソッドを定義すること」を意味するオーバーロード(Overload)とは全く別の概念なので注意してください。

抽象クラス(abstract class)

文字通り抽象的存在のクラスであり、オブジェクト生成はできません。
具体的な処理は抽象クラスを継承したクラス内に記述します。
複数のクラスに対して強制的に共通機能(共通処理)を持たせたい時に使います。

インタフェース(interface)

多重継承(実装)することができるクラス。抽象クラス同様、オブジェクト生成はできません。
インターフェースのクラスの中で定義できるメンバは、
フィールド変数(定数のみ)、メソッド(抽象メソッド)だけで、コンストラクタも定義することができません。
2つ以上のクラスを同時に継承させてサブクラスを使いたい時に、インターフェースを作成します。

※詳細はテキスト「Java基礎(オプション)」にて取り扱っています。
ご希望があればオプションカリキュラムとして提供します。