자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Scala] 3장 - 객체지향 프로그래밍(OOP)

728x90

✅ 1. 클래스와 객체

  • 클래스(class): 객체를 만들기 위한 설계도
  • 객체(object): 클래스로부터 생성된 인스턴스
class Person(val name: String, val age: Int) {
    def greet(): Unit = {
        println(s"Hello, my name is $name and I am $age years old.")
    }
}

object ClassObject extends App {
    val p = new Person("Charlie", 30)
    p.greet()
}

 2. 생성자와 필드

클래스 파라미터가 기본 생성자 역할이며 val을 붙이면 읽기 전용, var을 붙이면 수정 가능한 필드 보조 생성자는 def this(...)로 정의 가능합니다.

class Person (val name: String, var age: Int) {
    def this(name: String) = this(name, 0) // Secondary constructor with default age     
}

 3. 상속과 다형성(polymorphism)

스칼라는 extends키워드를 상속하고 메서드 오버라이딩은 override 키워드가 필수로 들어갑니다.

class Hitting {
    def hit(): Unit = println("...")
}

class Baseball extends Hitting {
    override def hit(): Unit = println("Hitting!")
}

object Polymorphism extends App {
    
    val a: Hitting = new Baseball 
    a.hit() // Output: Hitting!
    
}

 4. 추상 클래스 vs 트레이트 

구분 abstruct class trait
상속 단일 상속만 가능 다중 상속 가능
생성자  생성자 가질 수 O 생성자를 가질 수 X
상태(필드) 가질 수 O 상태를 가질 수 있으나 권장 X
사용 클래스처럼 사용 인터페이스 + 믹스인 용도로 사용
abstract class Animal {
    def sound(): Unit
}
trait FourLegged {
    def walk(): Unit = {
        println("Walking on four legs") 
    }
}

class Dog extends Animal with FourLegged {
    def sound(): Unit = {
        println("Woof!")
    }
}

object ABObject extends App {
   val dog = new Dog()
   dog.sound() // Outputs: Woof!
   dog.walk() // Outputs: Walking on four legs
}

✅ 5.싱글턴 객체(object 키워드)

object는 클래스 없이 단일 인스턴스를 생성하며 주로 유틸리티 메서드, 팩토리 메서드, 싱글턴으로 사용합니다.

object Logger {
    def log(msg: String): Unit = {
        println(s"Log: $msg")
    }
}

object SingleObject extends App {
    Logger.log("This is a log message")
}

 

 

GitHub - Koras02/scala-bloging: https://thinky.tistory.com/category/Back-End/Scala

https://thinky.tistory.com/category/Back-End/Scala - Koras02/scala-bloging

github.com

 

728x90
LIST