// Class interface, but the method can be implemented // multiple inheritance trait traita {Val tnum: int def log (MSG: string): unit = {println ("log: "+ MSG) }} trait traitb extends traita {def test: unit = {log (" trait TB call ") }} trait traitc extends traitb {override def test: unit = {log ("trait TC call") }}// classabstract class classa {def define actmethod} class classb extends classa {def define actmethod: unit = {println ("classb is call")} // test multiple inheritance class classc extends classb with traitb {Val tnum: Int = 3 def calltrait (): unit = {test} def callabstract (): unit = {abstractmethod} object testtrait extends app {var C1 = new classc c1.calltrait () c1.callabstract () vaR c = new classc with traitc C. calltrait () C. callabstract () println (C. tnum )}
Running result:
Log: trait TB call
Classb is call
Log: trait TC call
Classb is call
3
From this we can see that in Scala, creating a trait derived class object is a subclass of the trait class that can be inherited again, providing the program with more flexibility.
Learn Scala trait