私はコットンの代表団について本当に混乱しています。ここでは、kotlinの相違と同じように見える、通常の多型アプローチを説明しましょう。kotlinの委任はどのように便利ですか?
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
fun main(args: Array<String>) {
val b : Base = BaseImpl(10)
b.print() // prints 10
}
私は指定されたクラスのオブジェクトのメソッドを呼び出すためにb
変数にBase
インタフェースの実装クラスを渡すことができます。それではkotlin
の代表団のメリットは何ですか?これはhereと記載されています。
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
class Derived(b: Base) : Base by b // why extra line of code?
// if the above example works fine without it.
fun main(args: Array<String>) {
val b = BaseImpl(10)
Derived(b).print() // prints 10
}
これは、両方のコードが正常に動作している単純なシナリオです。代表団の利益があるはずだからこそ、kotlinはそれを導入したのです。違いはなんですか?コトリンの代表団がどのように役立つのでしょうか?多型アプローチと比較するための実例を私にお願いします。
これは、Kotlinがそれを実装する方法よりも、委任そのもののメリットについての質問であるかどうか疑問です。 –
私はコットリン代表団がどのように役立つのか知ってもらいましたか?委任がどのように役立つかではありません。私はすでに委任の目的について知っているからです。しかし、kotlinの実装は私を混乱させています。 – UnKnown
コードの最初のブロックは、2番目のブロックと同等の結果を返しません。手で 'Derived 'を実装しようとすると、違いを感じるでしょう。 – Ilya