스칼라의 정적 멤버 이해

Suraj P 2023년1월30일
  1. 스칼라의 싱글톤 객체
  2. 스칼라의 컴패니언 객체
스칼라의 정적 멤버 이해

이 기사에서는 스칼라의 정적 멤버에 대해 배웁니다.

이제 Scala는 Java보다 객체 지향적이지만 Java와 달리 Scala에는 static 키워드가 없습니다. 따라서 솔루션은 컴패니언 개체 또는 싱글톤 개체를 사용하는 것입니다.

스칼라의 싱글톤 객체

Scala에는 static 키워드가 없으므로 싱글톤 객체의 개념을 사용할 수 있습니다. 싱글톤 객체는 클래스에 대한 단일 객체를 정의하는 객체 유형입니다.

이것은 프로그램 실행을 위한 진입점을 제공합니다. 프로그램에서 싱글톤 개체가 생성되지 않으면 코드가 컴파일되지만 출력은 제공되지 않습니다.

싱글톤 객체는 object 키워드를 사용하여 생성됩니다.

통사론:

object name
{
//our code..
}

예제 코드:

object Example
{
    // Variables of singleton object
    var name = "My name is tony stark";
    var language = "We are learning Scala language";

    // Method of singleton object
    def display()
    {
        println(name);
        println(language);
    }
}

// Singleton object whose name is main
object Main
{
    def main(args: Array[String])
    {
        //calling the method
        Example.display();
    }
}

출력:

My name is tony stark
We are learning Scala language

설명:

위의 코드에서 ExampleMain이라는 두 개의 싱글톤 개체를 만들었습니다. Example 개체에는 display()라는 메서드가 포함되어 있습니다. 이 메서드는 개체를 만든 다음 호출하는 대신 Example 개체 이름을 사용하여 Main 개체 내부에서 직접 호출됩니다.

다음은 싱글톤 개체에 대한 몇 가지 중요한 사항입니다.

  1. Main 메서드는 싱글톤 개체로 작업할 때 항상 있어야 합니다.
  2. 싱글톤 객체의 인스턴스를 생성할 수 없습니다.
  3. 싱글톤 객체 내부의 메소드는 전역 접근이 가능합니다.
  4. 싱글톤 객체는 클래스와 특성을 확장할 수 있습니다.

스칼라의 컴패니언 객체

인스턴스, 즉 클래스의 비정적 멤버를 정의하고 클래스와 동일한 이름을 가진 객체에서 정적 멤버로 표시하려는 멤버를 정의합니다. 이러한 종류의 객체를 컴패니언 객체라고 하며 클래스를 companion 클래스라고 합니다.

컴패니언 개체와 클래스는 동일한 소스 파일에 정의되어야 합니다.

예제 코드:

class Example
{
    var name = "My name is tony stark";
    var language = "We are learning Scala language";


    def display()
    {
        println(name);
        println(language);
    }
}

object Example
{
    def main(args: Array[String])
    {
        //calling the method
        var obj = new Example();
        obj.display()
    }
}

출력:

My name is tony stark
We are learning Scala language
작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub