OOP: Classes, Inheritance, and Overriding
- class A:
- def f(x: Int) =
- println(s"A.f($x)")
- if x == 0 then g() else f(x - 1)
- def g() =
- println("A.g()")
- class B extends A:
- def f(x: Int) =
- println(s"B.f($x)")
- super.f(x)
- def g() =
- println("B.g()")
FP: Functions and Pattern Matching
- def f(a: A, x: Int) = a match
- case _: B =>
- println(s"B.f($x)")
- fbase(a, x)
- case _ =>
- fbase(a, x)
- def fbase(a: A, x: Int) =
- println(s"A.f($x)")
- if x == 0 then g(a) else f(a, x - 1)
- def g(a: A) = a match
- case _: B => println("B.g()")
- case _ => println("A.g()")