2013-07-14 2 views
0

동일한 파일에 스칼라가 봉인 된 클래스에서 파생되도록 허용한다는 것을 알고 있습니다.스칼라의 봉인 된 클래스 "봉인의 범위"

sealed[Derived/*, list of allowed to derive*/] class Base 
class Derived extends Base 

이 구문은 "보호의 범위"와 같은 것입니다 :

class A{ 
    private[A] val value = 10 
} 

그래서 수, 그것은 이런 식으로 뭔가를 할 수 있도록 의미가없는 경우, 특수 건설이 수 또는 수 파생 된 클래스를 별도의 파일에 배치합니다.

+0

케이스 클래스를 별도의 파일에 넣을 방법을 찾고 있습니까? – Mingyu

+0

대부분의 경우 - 예? 또한 '사례'가 아닌 수업에도 적용됩니다. – user4298319

+0

'sealed '는 서브 클래스간에 전이 적이 지 않습니다. 즉, 'sealed'는 'sealed'로 표시된 클래스의 * direct * 서브 클래스에만 적용됩니다. 하위 클래스 (또는 특성)가 '최종'이 아닌 경우 하위 클래스 자체는 봉인되지 않으므로 하위 클래스가 추가 될 수 있습니다. –

답변

1

봉인 된 클래스에는 동일한 파일에있는 것을 제외한 새 하위 클래스를 추가 할 수 없습니다. 디자인

1

이유 - 프로그래머는 이미 알고 서브 클래스에 대해 걱정할 필요.

2 - 컴파일러가 누락 된 패턴 조합에 경고 메시지를 플래그로 표시하므로 컴파일러 지원이 향상됩니다.

+0

동일한 패키지에있는 클래스 만 허용하는 것이 맞습니까? – user4298319

+0

@ serg.f 당신은 패키지로 보호되는 생성자의 Java 기술을 가지고 놀 수 있습니다. – Bluu

+0

당신이 그 파일에 테스트 클래스를 만들지 않는 한 테스트 물건을 junit하는 것은 꽤 어렵습니다. – lisak

관련 문제