개발관련/other

Scala에서 객체와 클래스의 차이점

Rateye 2021. 12. 7. 10:18
728x90
반응형
질문 : Scala에서 객체와 클래스의 차이점

인터넷에서 몇 가지 Scala 자습서를 살펴보고 몇 가지 예제에서 예제 시작시 개체가 선언되는 것을 확인했습니다.

Scala에서 classobject 의 차이점은 무엇입니까?

답변

  • 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 {
  ...
}

BC 모두 확장하는 익명 (액세스 불가능) 클래스를 선언하고 A 라는이 클래스의 단일 인스턴스를 인스턴스화합니다.

A B 또는 C 유형의 객체를 기대하는 함수에 전달 될 수 B with C 전달한다는 것을 의미합니다.

객체의 추가 기능

Scala에는 객체의 몇 가지 특별한 기능도 있습니다. 공식 문서 를 읽는 것이 좋습니다.

출처 : https://stackoverflow.com/questions/1755345/difference-between-object-and-class-in-scala
728x90
반응형