728x90
반응형
질문 : Scala에서 객체와 클래스의 차이점
인터넷에서 몇 가지 Scala 자습서를 살펴보고 몇 가지 예제에서 예제 시작시 개체가 선언되는 것을 확인했습니다.
Scala에서 class
와 object
의 차이점은 무엇입니까?
답변
class C
는 Java 또는 C ++에서와 마찬가지로 클래스를 정의합니다.object O
생성 싱글 톤 객체O
일부 익명 클래스의 인스턴스로를; 일부 클래스의 인스턴스와 연결되지 않은 정적 멤버를 보유하는 데 사용할 수 있습니다.object O extends T
를 확장하면 객체O
trait T
의 인스턴스가됩니다. 그런 다음 어디에서나O
를 전달할 수T
가 예상됩니다.class C
가 있으면object C
는 클래스C
의 동반 객체 입니다. 컴패니언 객체는 자동으로C
의 인스턴스가 아닙니다 .
객체 및 클래스에 대한 Scala 문서도 참조하십시오.
정적 멤버의 호스트로서 객체
대부분의 경우 일부 클래스의 인스턴스를 먼저 인스턴스화하지 않고도 사용할 수있는 메서드와 값 / 변수를 보유 object
이 사용은 Java의 static
멤버와 밀접한 관련이 있습니다.
object A {
def twice(i: Int): Int = 2*i
}
A.twice(2)
사용하여 위의 메서드를 호출 할 수 있습니다.
twice
A
의 구성원 인 경우 먼저 인스턴스를 만들어야합니다.
class A() {
def twice(i: Int): Int = 2 * i
}
val a = new A()
a.twice(2)
twice
인스턴스 별 데이터가 필요하지 않으므로 이것이 얼마나 중복되는지 알 수 있습니다.
특수 명명된 인스턴스로 개체
object
자체를 클래스 또는 트레이 트의 특수 인스턴스로 사용할 수도 있습니다. 이 작업을 수행 할 때 객체는 하위 클래스의 인스턴스가되기 위해 trait
다음 코드를 고려하십시오.
object A extends B with C {
...
}
B
와 C
모두 확장하는 익명 (액세스 불가능) 클래스를 선언하고 A
라는이 클래스의 단일 인스턴스를 인스턴스화합니다.
A
B
또는 C
유형의 객체를 기대하는 함수에 전달 될 수 B with C
전달한다는 것을 의미합니다.
객체의 추가 기능
Scala에는 객체의 몇 가지 특별한 기능도 있습니다. 공식 문서 를 읽는 것이 좋습니다.
def apply(...)
A(...)
의 일반적인 메서드 이름없는 구문을 활성화합니다.def unapply(...)
는 사용자 지정 패턴 일치 추출기를 만들 수 있습니다.- 동일한 이름의 클래스가 동반되는 경우 객체는 암시 적 매개 변수를 확인할 때 특별한 역할을 맡습니다.
출처 : https://stackoverflow.com/questions/1755345/difference-between-object-and-class-in-scala
728x90
반응형
'개발관련 > other' 카테고리의 다른 글
Login failed for user 'IIS APPPOOL\ASP.NET v4.0' (0) | 2021.12.09 |
---|---|
Visual Studio Code에 공백 문자 표시하는 방법 (0) | 2021.12.08 |
Docker 컨테이너 내부에서 머신의 로컬 호스트에 연결하는 방법 (0) | 2021.12.07 |
UIViewController의 뷰가 보이는지 확인하는 방법 (0) | 2021.12.07 |
상속성보다 컴포지션을 선호하는 이유 (0) | 2021.12.07 |