Created
January 30, 2012 15:58
-
-
Save casualjim/1705121 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scala> trait A { | |
| private val a = "a" | |
| private lazy val b = "b" | |
| private def c = "c" | |
| private var d = "d" | |
| } | |
defined trait A | |
scala> abstract class B { | |
| val a = "aa" | |
| lazy val b = "bb" | |
| def c = "c" | |
| var d = "dd" | |
| } | |
defined class B | |
scala> class C extends B with A | |
<console>:9: error: overriding method c in class B of type => java.lang.String; | |
method c in trait A$class of type => java.lang.String has weaker access privileges; it should not be private | |
class C extends B with A | |
^ | |
scala> trait AA { | |
| private val a = "a" | |
| def bbb ="bbb" | |
| } | |
defined trait AA | |
scala> class D extends B with AA | |
defined class D | |
scala> trait BB { | |
| private lazy val b = "b" | |
| } | |
defined trait BB | |
scala> class E extends B with BB | |
defined class E | |
scala> trait CC { | |
| private def c = "c" | |
| def ccc = "ccc" | |
| } | |
defined trait CC | |
scala> class F extends B with CC | |
<console>:9: error: overriding method c in class B of type => java.lang.String; | |
method c in trait CC$class of type => java.lang.String has weaker access privileges; it should not be private | |
class F extends B with CC | |
^ | |
scala> trait DD { | |
| private var d = "d" | |
| def ddd = "ddd" | |
| } | |
defined trait DD | |
scala> class G extends B with DD | |
defined class G | |
scala> trait BB { | |
| private val b = 2 | |
| } | |
defined trait BB | |
scala> abstract class B { | |
| val b = "two" | |
| } | |
defined class B | |
scala> new B with BB | |
res0: B with BB = $anon$1@461014 | |
scala> res0.b | |
res1: java.lang.String = two | |
scala> trait CC { | |
| private lazy val a = 33 | |
| } | |
defined trait CC | |
scala> abstract class C { | |
| lazy val a = "thirty three" | |
| } | |
defined class C | |
scala> new C with CC | |
res2: C with CC = $anon$1@7742683 | |
scala> res2.a | |
res3: java.lang.String = thirty three |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
scala> trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; class C extends B with A; (new C).a | |
<console>:9: error: lazy value a in trait A cannot be accessed in C | |
(new C).a | |
^ | |
scala> trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; class C extends B with A; | |
<console>:7: error: overriding lazy value a in class B of type java.lang.String; | |
lazy value a in trait A of type Int has weaker access privileges; it should not be private | |
trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; class C extends B with A; | |
^ | |
scala> trait A { private lazy val a = 3 }; abstract class B { lazy val a = "a" }; | |
defined trait A | |
defined class B | |
scala> (new B with A).a | |
res1: java.lang.String = a | |
scala> class C extends B with A | |
defined class C | |
scala> (new C).a | |
res2: java.lang.String = a |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment