scala之类的嵌套、内部类、外部类
scala中也支持嵌套类,Java中也是支持内部类的
.
1 通过外部类创建内部类的对象实例
小试牛刀代码如下。
package com.shufang.inner_class
import com.shufang
class InnerClassDemo {
//普通成员内部类
class InnerClass {}
}
object InnerClassDemo {
//静态内部类
class InnerStaticClass {}
def main(args: Array[String]): Unit = {
//创建对象实例
val i1 = new InnerClassDemo()
//通过实例调用成员内部类(创建实例)
val ii = new i1.InnerClass()
println(ii)
//通过创建InnerClassDemo的类对象,创建静态内部类实例
val clazz: InnerStaticClass = new shufang.inner_class.InnerClassDemo.InnerStaticClass
println(clazz)
}
}
2 内部类调用外部类
除了可以使用外部类创建对应的内部类的实例对象,我们也可以在内部类中调用外部类的属性、方法
等成员。
2.1 方式1 外部类.this.defName/attrName 调用
class A{
// 别名
a =>
var name:String = "jack"
def say(){
println("hello me")
}
class InA{
A.this.say()
A.this.name.sout
}
}
2.2 方式2 外部类别名 a => a.say() / a.name
class A{
// 别名
a =>
var name:String = "jack"
def say(){
println("hello me")
}
class InA{
a.say()
a.name.sout
}
}