Понимание черт в Котлин - PullRequest
7 голосов
/ 10 декабря 2011

В Kotlin у нас будет возможность создать «черту, которая может потребовать расширения класса на стороне вызова», например

 class Bar {}
 trait T1 : Bar {}
 class Foo : Bar, T1, T2, T3 {}
 class Wrong : T1, T2 //error: Wrong should extend Bar

Я не могу представить поток, где я могу применить эту структуру. Может кто-нибудь сказать мне, зачем нам это нужно?

1 Ответ

7 голосов
/ 10 декабря 2011

Я думаю, что основная причина этого заключается в том, что эта черта позволяет использовать методы и свойства, определенные в конкретном классе.Представьте себе, что Bar имеет некоторый базовый метод, который может быть построен поверх других удобных методов ... если для свойства требуется, чтобы он использовался в подклассах Bar, вы можете определить методы в признаке, вызывающем этот метод.Затем вы можете предоставить эти методы многим подклассам, задав им черту.

...