scala匿名内部类
-------------------
1、匿名类:
也就是没有命名的类
2、抽象类
// 抽象类
abstract class Person {
def say = {
println("hello")
}
3、普通类
class Person1(var name: String, var age: Int) {
def say = {
println("hello")
}
}
4、匿名内部类定义
匿名内部类是没有名称的子类,又成匿名子类,是直接通过实例对象创建。Spark的源代码中有大量使用到匿名内部类。
scala中的匿名内部类使用与Java一致。
定义:
val/var 变量名 = new 类/抽象类 {
// 重写方法
}
5、匿名内部类示例
object AnonymityInnerClass {
// 抽象类
abstract class Person {
def sayHello: String
}
// 普通类
class Person1(var name: String, var age: Int) {
def sayHello = ""
}
def main(args: Array[String]): Unit = {
// 抽象类不能实例化
//val p0 = new Person()
// 抽象类的匿名子类对象
val anonInnerClass1 = new Person {
override def sayHello: String = "hellp scala!!!"
}
println(anonInnerClass1.sayHello)
// 普通类的的匿名子类对象
val anonInnerClass2 = new Person1("xiaoen", 7) {
override def sayHello: String = this.name+"|"+this.age.toString
}
println(anonInnerClass2.sayHello)
// 普通类对象
val normalPerson = new Person1("xiaoen", 7)
println(normalPerson.name+"|"+normalPerson.age)
}
}