微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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、匿名内部类示例

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)

  }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐