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
'Back-End > Scala' 카테고리의 다른 글
[Scala] 6장 - 에러 처리 (1) | 2025.08.18 |
---|---|
[Scala] 5장 - 패턴 매칭 & Case 클래스 (4) | 2025.08.14 |
[Scala] 4장 - 함수형 프로그램 (FP) 패러다임 (0) | 2025.08.12 |
[Scala] 2장 - 기초 문법 배우기 (2) | 2025.08.09 |
[Scala] 1장 - Scala란? (3) | 2025.08.07 |