By Alvin Alexander. Last updated: November 28, 2023
As a brief note, here are some tests I just created with Scala 3 to test concepts like private
, protected
, def
, val
, and var
with inheritance tests, i.e., where classes extend other classes or traits:
// FAILS // package private_def: // trait StoreProduct: // private def id: Int // compiler: // // "abstract method id may not have `private` modifier" // // class Pizza extends StoreProduct: // val id = 1 package def_val: trait StoreProduct: protected def id: Int class Pizza extends StoreProduct: val id = 1 package val_val: trait StoreProduct: protected val id: Int class Pizza extends StoreProduct: val id = 1 package var_var: trait StoreProduct: protected var id: Int class Pizza extends StoreProduct: var id = 1 // FAILS // package val_var: // trait StoreProduct: // protected val id: Int // // class Pizza extends StoreProduct: // var id = 1 // compiler: // // "variable id of type Int needs to be a stable, immutable value" // FAILS // package var_val: // trait StoreProduct: // protected var id: Int // // class Pizza extends StoreProduct: // val id = 1 // compiler: // // "class Pizza needs to be abstract, since protected // // var id_=(x$1: Int): Unit in trait StoreProduct in // // package var_val is not defined"
Hopefully you can see from the comments what works and what doesn’t work when you’re using inheritance in Scala.