File tree Expand file tree Collapse file tree 2 files changed +106
-0
lines changed
src/test/resources/test-compile-data/jvm/kotlin-web-site/kotlin-tour-intermediate-classes-interfaces Expand file tree Collapse file tree 2 files changed +106
-0
lines changed Original file line number Diff line number Diff line change 1+ interface DrawingTool {
2+ val color: String
3+ fun draw (shape : String )
4+ fun erase (area : String )
5+ fun getToolInfo (): String
6+ }
7+
8+ class PenTool : DrawingTool {
9+ override val color: String = " black"
10+
11+ override fun draw (shape : String ) {
12+ println (" Drawing $shape using a pen in $color " )
13+ }
14+
15+ override fun erase (area : String ) {
16+ println (" Erasing $area with pen tool" )
17+ }
18+
19+ override fun getToolInfo (): String {
20+ return " PenTool(color=$color )"
21+ }
22+ }
23+ // sampleStart
24+ class CanvasSession (val tool : DrawingTool ) : DrawingTool {
25+ override val color: String = " blue"
26+
27+ override fun draw (shape : String ) {
28+ tool.draw(shape)
29+ }
30+
31+ override fun erase (area : String ) {
32+ tool.erase(area)
33+ }
34+
35+ override fun getToolInfo (): String {
36+ return tool.getToolInfo()
37+ }
38+ }
39+ // sampleEnd
40+ fun main () {
41+ val pen = PenTool ()
42+ val session = CanvasSession (pen)
43+
44+ println (" Pen color: ${pen.color} " )
45+ // Pen color: black
46+
47+ println (" Session color: ${session.color} " )
48+ // Session color: blue
49+
50+ session.draw(" circle" )
51+ // Drawing circle with pen in black
52+
53+ session.erase(" top-left corner" )
54+ // Erasing top-left corner with pen tool
55+
56+ println (session.getToolInfo())
57+ // PenTool(color=black)
58+ }
Original file line number Diff line number Diff line change 1+ interface DrawingTool {
2+ val color: String
3+ fun draw (shape : String )
4+ fun erase (area : String )
5+ fun getToolInfo (): String
6+ }
7+
8+ class PenTool : DrawingTool {
9+ override val color: String = " black"
10+
11+ override fun draw (shape : String ) {
12+ println (" Drawing $shape using a pen in $color " )
13+ }
14+
15+ override fun erase (area : String ) {
16+ println (" Erasing $area with pen tool" )
17+ }
18+
19+ override fun getToolInfo (): String {
20+ return " PenTool(color=$color )"
21+ }
22+ }
23+
24+ // sampleStart
25+ class CanvasSession (val tool : DrawingTool ) : DrawingTool by tool {
26+ // No boilerplate code!
27+ override val color: String = " blue"
28+ }
29+ // sampleEnd
30+ fun main () {
31+ val pen = PenTool ()
32+ val session = CanvasSession (pen)
33+
34+ println (" Pen color: ${pen.color} " )
35+ // Pen color: black
36+
37+ println (" Session color: ${session.color} " )
38+ // Session color: blue
39+
40+ session.draw(" circle" )
41+ // Drawing circle with pen in black
42+
43+ session.erase(" top-left corner" )
44+ // Erasing top-left corner with pen tool
45+
46+ println (session.getToolInfo())
47+ // PenTool(color=black)
48+ }
You can’t perform that action at this time.
0 commit comments