私はSHAPE
という名前のインターフェイスを持っています。 CIRCLE
およびRECTANGLE
は、このインターフェイスを実装する2つのクラスです。今私はCIRCLE
とRECTANGLE
のプロパティを拡張するクラス(私はクラスを書くためのオプションがあります)を書く必要がありますCIRCULARRECTANGLE
。どのようにJavaでこれを行うには?Javaでこの次の構造をどのように設計するのですか?
答えて
Javaは一度に1つのクラスを拡張するため、基準に合わせて抽象クラスを作成する必要があります。
例:
public abstract class AbstractRectangle extends Rectangle {
public abstract class AbstractCircularRectangle extends AbstractRectangle {
public class CircularRectangle extends AbstractCircularRectangle {
更新:決して仕事私の最初の試みは、意志、それゆえ私の更新:
私の最初の試みががCircle
を延長したことがないので、あなたは意志参照先をCircle
またはRectangle
にしておく必要があります。
public class CircularRectangle extends Rectangle {
private Circle circle;
public CircularRectangle(Circle circle) {
this.circle = circle;
}
// Some logic:
}
コンストラクタの目的は、円を参照することです。
しかし、あなたはサークルを拡張していません! – THelper
ああ、ありがとう....アップデート中。 –
これは直接行うことはできません。 Javaクラスは、常に1つのクラスだけを拡張できます。
でも同様の効果を得るために使用します。あなたのCircularRectangle
(それが表すものであれば何でも構いません)参照Circle
とRectangle
オブジェクトがあり、それ自体のプロパティを「現在」持っています。
質問はあいまいです。あなたは 'SHAPE'がどのように見えるのか分かりません –
@Op:これが有用かどうかについて私はこれ以上コメントしませんでした。 –
javaは複数の継承を許可しないため、これは不可能です。クラスに複数のスーパークラスを継承させることはできません。 継承の代わりに合成を使用してみてください。
Javaはおそらくあなたが組成物を使用して行うことができ、multiinheritanceを許可しない:
CIRCULARRECTANGLE
はSHAPE
を実装しています。
CIRCULARRECTANGLE
はまた、あなたのロジックに従って、この2つのインスタンスを使用してCIRCULARRECTANGLE
のメソッドを実装.Then CIRCLE
とRECTANGLE
のインスタンスが含まれています。
2つのインタフェースCircleとRectangleを定義します。クラスはこれらのインターフェイスを実装します。次に、両方のインタフェースを拡張したインタフェースCircularRectangleを定義することができます。 tridrクラスCircularRectangleは、2つのインスタンスcirlceInstanceとrectangleInstanceを持ち、インスタンスから必要なメソッドを呼び出す呼び出しを委譲する必要があります。
が-Circle
であり、両方のエンティティがクラスである限り、Rectangle
であるクラスを定義することはできません。統合失調症の挙動のこの種類は、所望される問題を解決するために
は、我々は
public class CircleImpl implements Circle {
// fields, constructors, implemented Circle methods
public Object adapt(Class<? extends Shape> adaptee) {
if (adaptee == Rectangle.class) {
return new Rectangle() {
// implemented rectangle methods so that
// we have a squared circle
};
}
return null;
}
}
+1は 'CircularRectangle'が' Cirle'でも 'Rectangle'でもないことを指摘していますので、どちらも拡張しないでください - 共通の継承誤解。 – Qwerky
- 1. JAVAのSWING - カスタム構造のようなツリーの設計
- 2. perlではどのようにこの構造をループするのですか?
- 3. これはどのように設計するのですか?
- 4. このデータベース構造をNHibernateにどのようにマップするのですか?
- 5. ユーザ、グループ、およびタグデータベース設計次のシナリオのためのデータベース構造を設計しようと
- 6. はどのようにこの構造
- 7. 次の構造は設計パターンと考えられますか?
- 8. Djangoでデータベース構造を設計する
- 9. pythonどのようにこのクラスを構造化する
- 10. データベース構造の設計
- 11. データ構造の設計
- 12. コードの設計と構造
- 13. これはどのようにアンドロイドで設計するのですか?
- 14. このグリッドビューのXMLページはどのように設計するのですか?
- 15. 次のような構造でJSONを解析する方法
- 16. このFuture [T]構造をどのように平坦化できますか?
- 17. タプルの構造を知るにはどうすればよいですか? Scalaで次のタプルの
- 18. リンカエラーは、次のように構造体
- 19. どのように "リフレッシュ" Pythonモジュールの構造ですか?
- 20. 設定構造を設計する
- 21. 2次元マトリックスのデータ構造の設計
- 22. どのようにjavaのデータベースのテーブルの構造を取得するには?
- 23. データ構造を設計するには?
- 24. どのようにバイトをPythonで構造化するのですか?
- 25. このアプリはどのように設計すればよいですか?
- 26. C++このクラス構造はどのように達成できますか?
- 27. このMySQLデータベースをどのように設計しますか?
- 28. データをどのように構造化できますか?
- 29. AndroidでこのUIをどのように設計できますか?
- 30. どのようにこのセキュリティの要求を設計する?
Javaはできない(我々が円と長方形インタフェース及び具体的な実装を持っている、と仮定して)アダプタパターンの使用を検討することができ円を四角にする。 –
@Andreas_D私は同意します100% –
ここでは一般的な方法は 'area()'だと思います。 :-) –