实现多继承
1.先父后子 2.有多个父亲,按书写顺序从左到右执行
package level02
object Class19 {
trait A {
println("A")
}
trait B {
println("B")
}
class Class1 extends A with B{
println("Class1")
}
def main(args:Array[String]): Unit = {
new Class1()
}
}
package level02
object Class19 {
trait A {
println("A")
}
trait BB {
println("BB")
}
trait B extends BB{
println("B")
}
class Class1 extends B with A{
println("Class1")
}
def main(args:Array[String]): Unit = {
new Class1()
}
}
package level02
object Class19 {
trait A {
println("A")
}
trait BB {
println("BB")
}
trait B extends BB{
println("B")
}
trait CC {
println("CC")
}
trait C extends CC{
println("C")
}
class Class1 extends B with A{
println("Class1")
}
def main(args:Array[String]): Unit = {
new Class1()
}
}
在文件中写入日志
package level02
import java.io.FileWriter
object Class20 {
trait FileLogger {
println(2)
val filename:String
lazy val fileWriter = new FileWriter(filename,true)
def writeLog(msg:String):Unit = {
fileWriter.write(msg)
fileWriter.close()
}
}
class MyFileLogger extends FileLogger{
println(1)
val filename = "11-26.log"
}
def main(args:Array[String]):Unit = {
val filelogger = new MyFileLogger()
filelogger.writeLog("今天上午上scala课程")
}
}
访问权限控制
公开的。不能写修饰符
package level02
object Person {
def test(p:Person):Unit = {
println(p.password)
}
}
class Person() {
var name:String = "xx";
protected var birthday:String = "2000-10-10"
private var password:String="123456"
private[this] var money:Int=100
def t():Unit = {
println(money)
}
}
class Son extends Person(){
println(birthday)
}
def main(args:Array[String]):Unit = {
val p1 = new Person()
println(p1.name)
new Son()
Person.test(p1)
}