1

多分これは非常にばかげた質問です。

Java を使用して MySql データベースへの接続を学習しようとしていますが、それを実行しました。私の質問は:

ResultSet rs=statement.executeQuery(sql);

このコードは正常に動作します。次に、

rs.next();

欲しい情報が手に入る。

しかし、ResultSet はインターフェースですか? どのようにメソッドを持つことができますか?

ファイルの上にこのインポートがあります:

import java.sql.ResultSet;

ありがとうございました。

4

5 に答える 5

4

ResultSetinterfaceの戻り型によって実装されるですstatement.executeQuery()ResultSet単に「誰かが私の型を実装するには、少なくともこれらの操作/メソッドを提供する必要がある」と言っています。の戻り値の型がstatement.executeQuery()ResultSet を実装したい場合、インターフェイス内のすべてのメソッドの実装を提供するのはそのクラス次第です。

により、ResultSet を ResultSet オブジェクト自体としてpolymorphism使用できる任意のクラスを使用できます。implements

ポリモーフィズムの詳細については、こちらをご覧ください

于 2013-03-24T00:36:12.723 に答える
3

ResultSetは確かにinterface- コントラクトを指定します。Object返品元は、この契約を履行する必要statement.executeQuery(sql);があります。

そのため、コントラクトで定義されたすべてのメソッドに具体的な実装を提供する必要があるものをstatement.executeQuery(sql);返します。ObjectimplementsResultSet interface

簡単な例

public static interface MyInterface {

    void doStuff();
}

public static class MyInterfaceImplementer implements MyInterface {

    @Override
    public void doStuff() {
        System.out.println("Doing stuff");
    }
}

public static void main(String[] args) throws InterruptedException {
    final MyInterface mi = new MyInterfaceImplementer();
    mi.doStuff();
}

出力:

Doing stuff

したがってMyInterface、実装オブジェクトがpublic void doStuff()メソッドを持たなければならないという契約を提供します。MyInterfaceImplementorif は、 it を宣言することによってその契約を履行しimplements MyInterfaceます。

MyInterfaceしたがって、参照をその具体的な実装者に割り当てることができ、interface実際に呼び出されるメソッドはMyInterfaceImplementer.

于 2013-03-24T00:41:36.703 に答える
2

インターフェイスにはメソッドがあり、適切に設計されたシステムでは、インターフェイスによって宣言されたメソッドを使用します。インターフェイスを実装するすべてのクラスは、インターフェイスによって宣言されたすべてのメソッドを定義し、それらの実装を提供する必要があります。

したがって、インターフェイス ResultSet でメソッドを使用する場合、実際にはそのインターフェイスの実装で宣言されたメソッドを使用しています。

于 2013-03-24T00:43:15.853 に答える
2

これは、オブジェクト指向プログラミングの主な特徴の 1 つであり、継承と呼ばれます。

つまり、親クラスが宣言されている場所では、任意の子クラスを使用できます。

あなたの場合、メソッドstatement.executeQuery(sql);ResultSet. この場合、文はそれを実装ResultSetして返す子クラスを作成しています。子クラスとして、すべてのマザー クラス メソッドが実装され、呼び出し可能です。

于 2013-03-24T00:36:04.383 に答える
2

パッケージ内のインターフェイスはjava.sql、データベース ベンダーが JDBC ドライバーを作成したときに実装されます。

JDBC ドライバーをロードすると、実装クラスがロードされます。

これは、JDBC ドライバー JAR を切り替えて接続パラメーターを変更するだけで、コードでデータベースを変更できる方法です。(ストレートな JDBC に固執し、ベンダー固有の SQL を使用しない限り。)

于 2013-03-24T00:36:26.557 に答える