1

ここに画像の説明を入力してください

こんにちは、質問を正しく理解したかどうかを確認したかっただけです。

(私)

public interface Coordinate {

    public double getDegrees();

    public double getMinutes();

    public double getSeconds();

    public String getDirection();

}

(ii)インターフェイスの代わりにAbstractクラスを使用し、Latitudeクラスを使用してAbstractクラスを拡張できますか?(なぜこれが有利なのかよくわかりませんか?実装されたメソッドを強制的に使用する代わりに、使用したいメソッドを選択できるためです)

(iii)public class Latitude implements Coordinate {}

(iv)public class Latitude extends Coordinate{}

4

2 に答える 2

2

-10intありませんdouble

'S'ではありcharませんString

インターフェイスの代わりに抽象クラスを使用できますか

とを除いてclassabstract classあなたは明白ではない呪文を使うことができます。

public @interface Coordinate {
    public int getDegrees();
    public int getMinutes();
    public double getSeconds();
    public char getDirection();
}

static class Location implements Coordinate {
    @Override
    public int getDegrees() {
        return 0;
    }

    @Override
    public int getMinutes() {
        return 0;
    }

    @Override
    public double getSeconds() {
        return 0;
    }

    @Override
    public char getDirection() {
        return 0;
    }

    @Override
    public Class<? extends Annotation> annotationType() {
        return Location.class;
    }
}
于 2012-08-10T16:34:34.303 に答える
2

(i)メソッドの戻りタイプを再確認してください。Stringsは二重引用符()で囲まれていることに注意してください""。どのタイプが一重引用符('')で囲まれていますか?

(ii)はい、これは良い答えのように聞こえます。1つの利点は、デフォルトの実装を抽象クラスで提供できるが、インターフェースでは提供できないことです。多くの場合、Javaでは、両方の利点を得るために両方を使用します。

于 2012-08-10T16:35:33.037 に答える