2

次の質問についてはよくわかりません。

Javaインターフェイスの場合Launchable、次のメソッドに渡すことができるオブジェクトは何ですか?このメソッド内のアイテムに対してどのようなメソッドを呼び出すことができますか?

public void prepareForLaunch (Launchable item) {
    // some code
}

私の現在の答えは次
のとおりです。上記の情報から、メソッドに渡すことができるオブジェクトは、インターフェイスのサブクラスタイプとしてインスタンス化されたオブジェクトのみですLaunchable。(?)メソッド内のアイテムで呼び出すことができるメソッドは、同じパッケージ内のパブリックメソッドまたは保護されたメソッド。Launchableこれらのメソッドは、メソッド本体の定義が存在できる抽象クラスと実際の(具体的な)クラスにのみ存在するため、オブジェクトのサブクラスを対象とする必要もあります。

ここの誰かが私の答えをチェックして、何か提案を追加できるかどうか疑問に思いました。ありがとう!

4

4 に答える 4

4

実装するクラスのインスタンスのみを渡すことができますLaunchable(直接、またはスーパークラスからの継承によって)。を渡すこともできますnull

Launchableメソッド内では、 (および)で定義されているすべてのメソッドを呼び出すことができますObject

これらのメソッドはインターフェースで定義されますが、実際のクラスで実装されます(Java型システムによって保証されているため、インターフェースの実装が不完全なクラスを作成することはできません。これらのメソッドは抽象として宣言する必要があり、インスタンス化)。Launchable

他のメソッドを呼び出す必要がある場合は、問題のオブジェクトが他のインターフェイスも実装している(または特定のクラスのものである)ことを知って、最初にそれに型キャストを行う必要があります。

于 2012-09-01T00:14:39.880 に答える
1

これはインターフェースであると述べたのでLaunchable、実装する任意のクラスのインスタンスをLaunchableに渡すことができますprepareForLaunch。クラスを実装Launchableする場合は、インターフェイスで定義されたメソッドを実装する必要があるため、のメソッドは、にLaunchable指定されたオブジェクトに対して呼び出すことができますprepareForLaunch

于 2012-09-01T00:17:49.613 に答える
1

あなたは最初の部分について正しいです。呼び出すことができるメソッドについて:キャストを使用していない場合は、Launchableの同じパッケージ内でのみpublic\protectedを呼び出すことができます。キャストを使用する場合は、呼び出すことができるメソッドの範囲を、キャスト先のクラスのメソッドに拡張できます。

このコードを考えてみましょう:

public interface Launchable
{
    public void aMethod();
}
public class SomeClass implements Launchable
{
    public void aMethod()
    {
    }
    public void bMethod(){}
}

キャストせずに電話をかけることができます

item.aMethod();

キャスティングを使用すると、次のように呼び出すことができます。

((SomeClass)item).bMethod();
于 2012-09-01T00:20:09.397 に答える
-1

implementsステートメントを使用する必要があります、

public void prepareForLaunch() implements Launchbla {
}
于 2012-09-01T00:16:40.643 に答える