class OuterClass{
prvate val str:String="hello world"
class NestedClass{
fun nestedMethod()="welcme"
fun nestedMethod()=this@OuterClass.str//错误的,静态类不能访问非静态类
}
class NestedClass2{
val nestedClass=NestedClass() //静态类只能访问静态类
nestedClass.nestedMethod()
}
}
fun main(args: Arrary<String>){
println(OuterClass.NestedClass().nestedMethod())
}
内部类(Inner Class)
class OuterClass2{
prvate val str:String="hello world"
inner class innerClass{
fun innerMethod()=this@OuterClass2.str
}
//局部嵌套类
fun getName():String{
class LocalNestedClass{
val name:String="Test"
}
var localClass=LocalNestedClass()
return localClass.name
}
}
fun main(args: Arrary<String>){
println(OuterClass2().NestedClass().innerMethod())
println(OuterClass2().getName())
}
/*
* Kotlin 内部类访问外部类变量的方式:this@OuterClass.str
* Java 访问外部类变量的方式:OuterClass.this.str
* */
class Person (val name:String,val age:Int){
private val str:String="Person属性"
private inner class PersonFeature(var height:Int,var weight:Int){
private val str:String="PersonFeature属性"
fun getPersonFeature(){
val str:String ="局部变量"
println("身高:$height,体重:$weight")
println("${this@Person.str}")
println("${this.str}")
println(str)
}
}
private fun method(){
println("执行了Person的method方法")
}
fun getPerson(){
val personFeature=PersonFeature(100,120)
personFeature.getPersonFeature()
}
}
fun main(args: Array<String>) {
val person = Person("zhangsan", 20)
person.getPerson()
}
嵌套类与内部类详解嵌套类(Nested Class)嵌套类不能访问外部类其他成员,只能访问另外一个嵌套类。例:class OuterClass{ prvate val str:String="hello world" class NestedClass{ fun nestedMethod()="welcme" fun nestedMeth...