Friday, September 23, 2016

'final' Modifier : Example

scala> /////////////////////////////////////

scala> //  Overriding a final method #234

scala> /////////////////////////////////////

scala> abstract class SubjectInfo(name: String) {
     |   def mark: Int = 35
     |   //final modifier to a 'Method'
     |   final def date: String = "2016/10/10"
     | }
defined class SubjectInfo

scala>

scala> // This does not compile

scala> class Math extends SubjectInfo("math") {
     |   override def date = "2016/10/15"
     | }
<console>:44: error: overriding method date in class SubjectInfo of type => String;
 method date cannot override final member
         override def date = "2016/10/15"
                      ^

scala>

scala> /////////////////////////////////////

scala> //  Overriding a final class

scala> /////////////////////////////////////

scala> final class SubjectInfo(name: String) {
     |   def mark: Int = 35
     |   //final modifier to a 'Method'
     |   def date: String = "2016/10/10"
     | }
defined class SubjectInfo

scala>

scala> class Math extends SubjectInfo("math")
<console>:43: error: illegal inheritance from final class SubjectInfo
       class Math extends SubjectInfo("math")
                          ^