scala之匿名子类

匿名子类就是没有名字的类

我们先定义一个父类, 看匿名子类如何设置。

父类的代码如下:父类为Tearch

package cn.qianfeng

object demo5_object {
    def main(args: Array[String]): Unit = {
        val  te = Tearch("kongzhagen", 35)
        te.show
        Tearch.ttt
    }
}

class Tearch(name:String, age:Int, course:String){ // 伴生类
    println("我是Teach主类")
    private val ta = "liming"
    def show(): Unit ={
        println(s"姓名 = ${name}, 年龄 = ${age}, 课程 = ${course}")
    }
}

object Tearch{ // 伴生对象
    def apply(name:String, age:Int): Tearch ={ // 对伴生类的重构
        val tea = new Tearch(name, age, null)
        println(tea.ta)
        tea

    }

    def ttt: Unit ={
        println("三人行")
    }
}

创建匿名子类

package cn.qianfeng

object demo_AnonimousSubClass {
    def main(args: Array[String]): Unit = {
        val p:Tearch = new Tearch("kong",23,"yuwen"){  // Teach的匿名子类,引用了同一个包中的类方法
            override def show(): Unit = {    // 重写Teach类
                println("show de 起飞!!!")
            }
        }
        p.show()
    }
}

结果:

我是Teach主类
show de 起飞!!!

原文地址:https://www.cnblogs.com/kongzhagen/p/15136741.html