In Scala, I want to have the following traits and classes
trait Paper {
def paint(args: Material): Unit
}
class WhitePaper extends Paper {
override def paint(args: DarkMaterial): Unit = {
darkMaterials.open()
}
}
trait Material {
def open() : Unit = {}
}
class DarkMaterial extends Material{
override def open() : Unit = {
print("Dark material")
}
}
However, my IDE shows error for the override of method paint(args: DarkMaterial), even though DarkMaterial extends Material. Why is this wrong? Anyone knows how to fix it?
Thank you so much.
paint(DarkMaterial)does not overridepaint(Material), becausepaint(Material)can accept anyMaterial; butpaint(DarkMaterial)can only acceptDarkMaterial.def paint(args: DarkMaterial)is acceptable?paint()is supposed to accept anyMaterial, or it isn't.