私はJavaが初めてで、これにこだわっています。インターフェイスは、具体的なサブクラスによって実装される抽象メソッドのみを「提供」することを知っています。これが本当であることを願っています(少なくとも)。それで、jxl api のサンプル コードを調べて、Excel ファイルを読み書きしていたところ、次のようにたどり着きました。
workbook = Workbook.createWorkbook(new File("/home/me/workspace/files/output.xls"));
WritableSheet sheet = workbook.createSheet("first sheet", 0);
つまり、workbook オブジェクトは以前にインスタンス化されており、WritableWorkbook オブジェクトです。WritableWorkbook のスーパークラスである Workbook が提供する静的メソッドを使用してワークブックを作成しています。そして、これまで、私はそこにいます。しかし、それでは、2 番目の命令で私は何をしているのでしょうか。シートは「WritableSheet」ですが、これはインターフェースです!APIを見ると、実装クラスはありません。そして、「WritableSheet」は「Sheet」である別のインターフェースのサブインターフェースです。両方のインターフェース。しかし、インターフェイスからオブジェクトを作成できなかったと思いました。次に、createSheet メソッド (WritableWorkbook が提供) を使用すると、WritableSheet を作成しているように見えます。次に、サンプルコードでこれに到達します:
Label lblNome = new Label(0, 1, "Nome:");
sheet.addCell(lblNome);
最初の行は問題ありません。新しい要素であるラベル (テキスト セル) を作成します。しかし、2番目の?繰り返しますが、addCell は API を参照するインターフェイス メソッドです。一方、シートは何の以前の実装でしたか? インターフェースのようです。また、インターフェイスが抽象メソッドを提供する場合、どのメソッドを使用していますか?
それをはっきりさせてくれませんか?最後にコードは機能しますが、これらのインターフェイス (Sheet と WritableSheet) がどのように機能しているかは明確ではありません。
ありがとうございました