class OuterClass{
prvate val str:String="hello world"
class NestedClass{
fun nestedMethod()="welcme"
fun nestedMethod()[email protected]//錯誤的,靜態類不能訪問非靜態類
}
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()[email protected]
}
//局部嵌套類
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 內部類訪問外部類變量的方式:[email protected]
* 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("${[email protected]}")
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()
}