下面是我如何把Java接口,構建一個共同的合同實現的一些功能的示例:從接口轉換爲特徵
package main.java;
public class Main {
interface Calculate {
public int run();
}
private class Calc1 implements Calculate {
@Override
public int run() {
return 1;
}
}
private class Calc2 implements Calculate {
@Override
public int run() {
return 0;
}
}
public static void main(String args[]){
Main m = new Main();
Calculate c = m.new Calc1();
System.out.println(c.run());
c = m.new Calc2();
System.out.println(c.run());
}
}
移動到斯卡拉性狀這裏是我已經重新實現了與上面相同的邏輯:
package main.scala
object traitsfun {
println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet
trait Calc {
def run: Int
}
class Calc1 extends Calc {
override def run = 1
}
class Calc2 extends Calc {
override def run = 0
}
val c1 = new Calc1().run //> c1 : Int = 1
val c2 = new Calc2().run //> c2 : Int = 0
}
這是Scala特徵的使用方式嗎?
當特徵未在其合約中提供值或函數的默認實現時,不需要包含'override'關鍵字。 – KChaloux
...但很好。 –