특성
특성은 Java의 인터페이스와 유사하며 특성 키워드를 사용하여 생성됩니다.
추상 클래스
추상 클래스는 자바의 추상 클래스와 유사하며 abstract 키워드를 사용하여 생성됩니다.
예시
다음은 Traits 및 Abstract Classes의 사용법을 보여주는 Scala 프로그램입니다.
trait SampleTrait {
// Abstract method
def test
// Non-Abstract method
def tutorials() {
println("Traits tutorials")
}
}
abstract class SampleAbstractClass {
// Abstract method
def test
// Non-abstract meythod
def tutorials() {
println("Abstract Class tutorial")
}
}
class Tester extends SampleAbstractClass {
def test() {
println("Welcome to Tutorialspoint")
}
}
class TraitTester extends SampleTrait {
def test() {
println("Welcome to Tutorialspoint")
}
}
object HelloWorld {
// Main method
def main(args: Array[String]) {
var obj = new Tester()
obj.tutorials()
obj.test()
var obj1 = new TraitTester()
obj1.tutorials()
obj1.test()
}
} 출력
Abstract Class tutorial Welcome to Tutorialspoint Traits tutorials Welcome to Tutorialspoint
다음은 Scala에서 Traits와 Abstract Classes 간의 중요한 차이점 중 일부입니다.
| Sr. 아니요. | 키 | 특성 | 추상 클래스 |
|---|---|---|---|
| 1 | 다중 상속 | 특성은 다중 상속을 지원합니다. | 추상 클래스는 단일 상속만 지원합니다. |
| 2 | 인스턴스 | 특성을 개체 인스턴스에 추가할 수 있습니다. | 추상 클래스는 개체 인스턴스에 추가할 수 없습니다. |
| 3 | 생성자 매개변수 | 특성은 생성자에 매개변수를 가질 수 없습니다. | 추상 클래스는 매개변수화된 생성자를 가질 수 있습니다. |
| 4 | 상호 운용성 | 특성은 구현이 없는 경우 Java와 상호 운용 가능합니다. | 추상 클래스는 제한 없이 자바와 상호 운용 가능합니다. |
| 5 | 스택 가능성 | 특성은 스택 가능하고 동적으로 바인딩됩니다. | 추상 클래스는 안정적이지 않으며 정적으로 바인딩됩니다. |