この種の「継承」に実際に名前を付けるにはどうすればよいですか?

BartłomiejSobieszek

継承を作成すると、オブジェクト定義を親として継承することを教えられました

Kotlinでは、次のコードを実行できます。

fun main(args : Array<String>) {
    open class aux (val input : Int) {
        fun print() {
            System.out.println(this.input)
        }
    }

    class baz : aux(5)
    class bar : aux(6)

    val x = baz()
    x.print()       // 5

    val y = bar()
    y.print()       // 6
}

この場合、baz(またはbar)がauxから継承していることはわかりません。継承されたクラスにはさまざまな実装があり、1つはコンストラクター内で5を取り、もう1つは6を取ります。これにより、まったく異なる動作が可能になります。

私にとってインスタンスの継承はプログラマーとして見たものとはかけ離れているため、このコードの機能に名前を付ける方法がわかりません。

このコードがより良いソフトウェアを作るのに役立つとは思えませんが、それは素晴らしいことですが、デバッグするのも非常に困難です

user2340612

私はあなたの主張を理解していません。Kotlin固有ではありません。Javaでも同じことができます。

class Main {
  public static void main(String[] args) {
    Aux bar = new Bar();
    Aux baz = new Baz();
    System.out.println(bar.getValue());
    System.out.println(baz.getValue());
  }
}

class Aux {
    private int value;
    public Aux(int i) {
        value = i;
    }

    public int getValue() {
      return value;
    }
}

class Baz extends Aux {
    public Baz() {
        super(4);
    }
}

class Bar extends Aux {
    public Bar() {
        super(5);
    }
}

それは印刷します:

5
4

より具体的な例を示すために、Vehicleコンストラクター引数としてintを受け入れる基本クラス(たとえば、ホイールの数)を作成し、その値を必要としない子クラス(たとえば、Car extends Vehicle常に4つのホイールを持つ)を作成できます。それがあなたのドメインにとって合理的である場合、あなたはそれを「意味のある価値を与える」と考えることができます。もちろん、必要に応じて、呼び出し元からその値を取得できます。

class Baz extends Aux { 
    public Baz(int value) {
        super(value);
    }
}

一般的な考え方は、子コンストラクターから親オブジェクトを構築するために必要なすべてのデータを提供する必要があるということです。その後、子オブジェクトの作成を完了する必要がありますが、そのオブジェクトが追加のデータを必要としない/受け入れる場合は、他の引数は必要ありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

継承を使用せずにPythonクラスに別名を付けて別の名前にするにはどうすればよいですか?

分類Dev

このメソッドに名前を付けるにはどうすればよいですか?

分類Dev

行列の行名の列に名前を付けるにはどうすればよいですか

分類Dev

これを実際の日付に変換するにはどうすればよいですか?

分類Dev

この形式で実際の日付を取得するにはどうすればよいですか?

分類Dev

iPhone 5の画面サイズの画像に名前を付けるにはどうすればよいですか?

分類Dev

Scipyのcsr_matrixに行と列の名前を付けるにはどうすればよいですか?

分類Dev

最初の行に特定の名前と画像を付けるにはどうすればよいですか?

分類Dev

Rの色に自分の名前を付けるにはどうすればよいですか?

分類Dev

Springで@Serviceに複数の名前を付けるにはどうすればよいですか?

分類Dev

Springで@Serviceに複数の名前を付けるにはどうすればよいですか?

分類Dev

Prologで同じ原子に2つの名前を付けるにはどうすればよいですか?

分類Dev

ファイルに何という名前を付けますか?単一のテストを実行するにはどうすればよいですか?

分類Dev

PythonでSQLタイプのINNERJOINを実行し、いくつかの列名のみに名前を付けるにはどうすればよいですか?

分類Dev

multiprocessing.pool内のプロセスに名前を付けるにはどうすればよいですか?

分類Dev

ModuleListの各モジュールに名前を付けるにはどうすればよいですか?

分類Dev

JButtonの名前の一部を色付けするにはどうすればよいですか?

分類Dev

この多重継承の問題を回避するにはどうすればよいですか?

分類Dev

複数のinit継承を使用してsuper()を実装するにはどうすればよいですか?

分類Dev

このデータフレームで行にA、B、C、D、Eという名前を付けるにはどうすればよいですか?

分類Dev

この継承をJavaで機能させるにはどうすればよいですか?

分類Dev

サブクラスで継承されたAPIメンバーの名前を変更するにはどうすればよいですか?

分類Dev

変数にrubyのメソッド名と同じ名前を付けないようにするにはどうすればよいですか?

分類Dev

Rで名前付きnumの名前を取得するにはどうすればよいですか?

分類Dev

実行中のアプリ(公開名ではなく実際の名前)を確認するにはどうすればよいですか?

分類Dev

すべてのキーに「Key」という名前を付けずにBSONからJSONを取得するにはどうすればよいですか?

分類Dev

コマンドのプロセスに名前を付け、後で名前で強制終了するにはどうすればよいですか?

分類Dev

intに基づいて自動的に名前が付けられるいくつかの文字を作成するにはどうすればよいですか?

分類Dev

Python DataFrameを条件付きでセル内の部分的に名前が付けられた列にコピーするにはどうすればよいですか?

Related 関連記事

  1. 1

    継承を使用せずにPythonクラスに別名を付けて別の名前にするにはどうすればよいですか?

  2. 2

    このメソッドに名前を付けるにはどうすればよいですか?

  3. 3

    行列の行名の列に名前を付けるにはどうすればよいですか

  4. 4

    これを実際の日付に変換するにはどうすればよいですか?

  5. 5

    この形式で実際の日付を取得するにはどうすればよいですか?

  6. 6

    iPhone 5の画面サイズの画像に名前を付けるにはどうすればよいですか?

  7. 7

    Scipyのcsr_matrixに行と列の名前を付けるにはどうすればよいですか?

  8. 8

    最初の行に特定の名前と画像を付けるにはどうすればよいですか?

  9. 9

    Rの色に自分の名前を付けるにはどうすればよいですか?

  10. 10

    Springで@Serviceに複数の名前を付けるにはどうすればよいですか?

  11. 11

    Springで@Serviceに複数の名前を付けるにはどうすればよいですか?

  12. 12

    Prologで同じ原子に2つの名前を付けるにはどうすればよいですか?

  13. 13

    ファイルに何という名前を付けますか?単一のテストを実行するにはどうすればよいですか?

  14. 14

    PythonでSQLタイプのINNERJOINを実行し、いくつかの列名のみに名前を付けるにはどうすればよいですか?

  15. 15

    multiprocessing.pool内のプロセスに名前を付けるにはどうすればよいですか?

  16. 16

    ModuleListの各モジュールに名前を付けるにはどうすればよいですか?

  17. 17

    JButtonの名前の一部を色付けするにはどうすればよいですか?

  18. 18

    この多重継承の問題を回避するにはどうすればよいですか?

  19. 19

    複数のinit継承を使用してsuper()を実装するにはどうすればよいですか?

  20. 20

    このデータフレームで行にA、B、C、D、Eという名前を付けるにはどうすればよいですか?

  21. 21

    この継承をJavaで機能させるにはどうすればよいですか?

  22. 22

    サブクラスで継承されたAPIメンバーの名前を変更するにはどうすればよいですか?

  23. 23

    変数にrubyのメソッド名と同じ名前を付けないようにするにはどうすればよいですか?

  24. 24

    Rで名前付きnumの名前を取得するにはどうすればよいですか?

  25. 25

    実行中のアプリ(公開名ではなく実際の名前)を確認するにはどうすればよいですか?

  26. 26

    すべてのキーに「Key」という名前を付けずにBSONからJSONを取得するにはどうすればよいですか?

  27. 27

    コマンドのプロセスに名前を付け、後で名前で強制終了するにはどうすればよいですか?

  28. 28

    intに基づいて自動的に名前が付けられるいくつかの文字を作成するにはどうすればよいですか?

  29. 29

    Python DataFrameを条件付きでセル内の部分的に名前が付けられた列にコピーするにはどうすればよいですか?

ホットタグ

アーカイブ