언어/Kotlin
코틀린 익명 중첩 클래스
김어찐
2022. 5. 25. 10:15
728x90
package innerclass
// inner에서는 outer 접근 자유롭다
// outer에서는 inner 접근 어려움
fun main() {
val obj1 = Outer1()
val obj2 = obj1.Inner()
obj2.innerMethod2()
val t1 = TestClass2()
t1.testMehtod1()
val t3 = object :TestClass1(){
override fun testMehtod1() {
println("익명 중첩 클래스의 testMehod1")
}
}
t3.testMehtod1()
// 인터페이스는 생성자 없음
val t4 = object :TestInter1{
override fun interMethod1() {
println("익명 중첩 클래스의 interMehod1")
}
}
t4.interMethod1()
}
class Outer1{
val outerMember1 = 100
fun outerMethod1() {
println("Outer Method")
}
inner class Inner{
var innerMember1 = 200
fun innerMethod1() {
println("Inner Mehtod")
}
fun innerMethod2() {
println("outerMember1 = ${outerMember1}")
outerMethod1()
}
}
}
abstract class TestClass1{
abstract fun testMehtod1()
}
interface TestInter1{
fun interMethod1()
}
class TestClass2 : TestClass1(){
override fun testMehtod1() {
println("TestCLass2의 testMethod1")
}
}
class TestClass3 : TestInter1 {
override fun interMethod1() {
println("TestCLass3의 testMethod1")
}
}
728x90