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
'언어 > Kotlin' 카테고리의 다른 글
코틀린 캐스팅 (0) | 2022.05.25 |
---|---|
코틀린 null 처리 (0) | 2022.05.25 |
코틀린 Generic (0) | 2022.05.25 |
코틀린 DataClass (0) | 2022.05.25 |
코틀린 Companion (0) | 2022.05.24 |