Weitere ähnliche Inhalte Ähnlich wie Einführung in Scala im Vergleich mit Java (8) Einführung in Scala im Vergleich mit Java28. Konstruktoren (3) public class TestClass{ public TestClass(int number) { if (number > 3) { System.out.println(”Enough testing."); } } public void doSomething() { ... } } TestClass test =new Testclass(4); // “Enough testing.” class TestClass(number:Int) { if (number > 3) { println(”Enough testing.") } def doSomething() = { ... } } var test = new TestClass(4) // “Enough testing.” © Sven Naumann, Marcel Rehfeld 32. Konstruktor Parameter (3) public class Complex { private int a, b; public Complex(int a, int b) { this.a = a; this.b = b; } public int getA() { return a; } public void setA(int a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; } } final Complex number = new Complex(1,0); number.setB(12); class Complex(var a:Int, var b:Int) val number = new Complex(1, 0) number.b = 12 © Sven Naumann, Marcel Rehfeld 51. Case Classes (4) class Color(val red:Int, val green:Int, val blue:Int) case class Red(r:Int) extends Color(r, 0, 0) case class Green(g:Int) extends Color(0, g, 0) case class Blue(b:Int) extends Color(0, 0, b) def printColor(c:Color) = c match { case Red(v) => println("Red: " + v) case Green(v) => println("Green: " + v) case Blue(v) => println("Blue: " + v) case col:Color => { print("R: " + col.red + ", ") print("G: " + col.green + ", ") println("B: " + col.blue) } case null => println("Invalid color") } © Sven Naumann, Marcel Rehfeld 59. Traits (3) abstract class APerson { def sleep() } trait TStudent extends APerson { override def sleep() = { println("sleeping 8h") } def learn() = { println("learing..") } } trait TWorker extends APerson { override def sleep() = { println("sleeping 6h") } def work() = { println("working..") } } class CollegeStudent extends TWorker with TStudent { } © Sven Naumann, Marcel Rehfeld Hinweis der Redaktion in Scala vorstellen, dass beides gleich ist. nur sehr umständlich altes beispiel vom auto: Demo in Eclipse: Große Vorteile: ist private, sieht aber aus, wie ein public, code musste nicht neu gemacht werden methoden können auch vorgegriffen werden, da nicht als teil des konstruktors erkannt alle überladenen konstruktoren müssen (!) auf den default verweisen, der im klassenname deklariert ist.