E231: Concrete Class Has Unimplemented Methods — 구현 안 된 추상 멤버가 남아 있어요
E231: Concrete Class Has Unimplemented Methods — 구현 안 된 추상 멤버가 남아 있어요
추상이 아닌 클래스나 객체가 트레이트나 추상 클래스를 상속했는데, 상속받은 추상 멤버 중 하나 이상을 구현하지 않으면 이 에러가 발생해요. 클래스는 상속받은 모든 추상 멤버를 자신이나 조상 중 하나에서 구현해야 합니다. 아니면 abstract로 선언해서 나머지 일을 하위 클래스에 넘겨야 해요.
본문
Example
trait Animal:
def name: String
def sound: String
class Dog extends Animal
Dog는 name과 sound를 구현하지 않았어요.
Error
-- [E231] Declaration Error: example.scala:5:6 ---------------------------------
5 |class Dog extends Animal
| ^^^
| class Dog needs to be abstract, since it has 2 unimplemented members.
|
| Members declared in Animal:
| - def name: String
| - def sound: String
Solution
빠진 멤버를 모두 구현하거나:
trait Animal:
def name: String
def sound: String
class Dog extends Animal:
def name: String = "Rex"
def sound: String = "Woof"
클래스를 abstract로 선언해 하위 클래스로 책임을 넘길 수 있어요.
trait Animal:
def name: String
def sound: String
abstract class Dog extends Animal