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 举报,一经查实,本站将立刻删除。