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、匿名内部类示例
1 object AnonymityInnerClass { 2 3 // 抽象类 4 abstract class Person { 5 def sayHello: String 6 } 7 8 // 普通类 9 class Person1(var name: String, var age: Int) { 10 def sayHello = "" 11 } 12 13 14 def main(args: Array[String]): Unit = { 15 16 // 抽象类不能实例化 17 //val p0 = new Person() 18 19 // 抽象类的匿名子类对象 20 val anonInnerClass1 = new Person { 21 override def sayHello: String = "hellp scala!!!" 22 } 23 println(anonInnerClass1.sayHello) 24 25 // 普通类的的匿名子类对象 26 val anonInnerClass2 = new Person1("xiaoen", 7) { 27 override def sayHello: String = this.name+"|"+this.age.toString 28 } 29 println(anonInnerClass2.sayHello) 30 31 // 普通类对象 32 val normalPerson = new Person1("xiaoen", 7) 33 println(normalPerson.name+"|"+normalPerson.age) 34 35 } 36 }