class MobileEngineer : SoftwareEngineer() { | |
override fun calculateSeniority(yearsInBusiness: Int): Int { | |
if (yearsInBusiness >= 15) { | |
return ULTRA_SENIOR | |
} | |
return super.calculateSeniority(yearsInBusiness) | |
} | |
companion object { | |
const val ULTRA_SENIOR = 3 | |
} | |
} | |
// which leads in: | |
fun printSeniority(engineer: SoftwareEngineer, yearsInBusiness: Int) { | |
val seniority = engineer.calculateSeniority(yearsInBusiness) | |
val label = when (seniority) { | |
MobileEngineer.ULTRA_SENIOR -> "ultra senior" // printSeniority is forced to know about MobileEngineer | |
SoftwareEngineer.JUNIOR -> "junior" | |
SoftwareEngineer.MID -> "mid" | |
else -> "senior" | |
} | |
println("This is a $label engineer") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment