Thursday, August 6, 2009

Simple classes

Scala classes are similar to java classes but are designed to work around some of the boiler plate code. We will address multiple constructors another day. But one thing to note is that normally the code that is in a Java constructor goes directly in the body of a Scala class or in a companion object (also covered later).
  1. scala>class NewClass( aPrivateInt:Int, val iAmPublic:Int, var iAmAlsoPublic:Int)
  2. defined class NewClass
  3. scala>val c = new NewClass(1,2,3)
  4. c: NewClass = NewClass@da99836
  5. scala> c.aPrivateInt
  6. :7: error: value aPrivateInt is not a member of NewClass
  7.        c.aPrivateInt
  8.          ^
  9. scala> c.iAmPublic
  10. res2: Int = 2
  11. scala> c.iAmAlsoPublic
  12. res3: Int = 3
  13. scala> c.iAmPublic = 10 // not allowed because iAmPublic is a val
  14. :6: error: reassignment to val
  15.        c.iAmPublic = 10
  16.                    ^
  17. scala> c.iAmAlsoPublic = 10 // iAmAlsoPublic is a var
  18. scala> c.iAmAlsoPublic
  19. res4: Int = 10
  20. scala>class c2( aPrivate:Int ) {
  21.      | val aPublic = aPrivate + 10
  22.      | }
  23. defined class c2
  24. scala>class c3(tmp:Int) extends c2(tmp){
  25.      | overrideval aPublic = tmp * 10 // can't access super.aPrivate because it
  26.  is classprivate so use tmp
  27.      | }
  28. defined class c3
  29. scala>new c2(10).aPublic
  30. res5: Int = 20
  31. scala>new c3(10).aPublic
  32. res6: Int = 100
  33. scala>class c4( aPrivate:Int ) {
  34.      | println(aPrivate)
  35.      | privatevalprivate2 = aPrivate % 10
  36.      | println(private2)
  37.      | }
  38. defined class c4
  39. scala>new c4(22)
  40. 22
  41. 2
  42. res7: c4 = c4@64d90254

No comments:

Post a Comment