scala匿名内部类

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 }

posted on 2021-09-07 12:54  xiaoenduke  阅读(299)  评论(0编辑  收藏  举报