ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] Class
    Kotlin 2022. 9. 14. 15:24

    자바는 프로그램 자체도 클래스임. 클래스로 프로그램의 실행과 자료들이 모두 관리됨. -> 객체지향프로그램

    객체지향 프로그램의 반대개념이 구조화프로그램.
    이는 함수 중심으로 프로그램 시작과 끝이 관리됨. 코틀린 자료들은 클래스로 프로그램 시간과 끝 관리는 함수로 병행하여 운용되는 형태.

     

    생성된 클래스 형태로 객체를 생성함.

    클래스명 참조변수이름 = new 클래스명() // 자바
    val 참조변수이름: 클래스명 = 클래스명() // 코틀린
     
    fun main(){
        val obj1: TestClass1 = TestClass1() // 정의된 클래스의 객체 생성
        val obj2: TestClass2 = TestClass2() // new를 쓰지 않아도 새공간이 할당됨
        // new를 쓰지 않는다고 새로운 공간이 만들어지지 않는 것이 아니라 사용상 생략되어 사용될 뿐
        println("obj1: $obj1")
        println("obj2: $obj2")
        val obj3 = obj1
        println("obj3: $obj3")
    }
    
    class TestClass1{
    
    } // 비어있는 클래스의 생성
    
    class TestClass2{
    // 비어있는 클래스의 생성 & {} 생략
    // 비어있는 클래스를 생성한다면 {} 생략 가능
    }

     

    fun main(){
        val obj5 = TestClass3()
        // 자료형이 대입되는 객체의 자료형에 의해 명확히 결정되므로 변수 옆에 :TestClass3는 생략됨
        println("obj5.a1: $obj5.a1")
        println("obj5.a2: $obj5.a2")
        // 멤버변수에 접근하는 순간 내부적으로 getter와 setter가 실행되어 값을 이용하게 됨
    
        // obj5.a1 = 100 // error: setter가 없는 a1 변수는 값을 변경할 수 없음
        obj5.a2 = 200
        println("obj5.a2: ${obj5.a2}")
        obj5.testMethod1()
        obj5.testMethod2()
    }
    
    class TestClass3{
        val a1:Int=0 // getter만 있는 val 변수는 밑줄이 없음
        var a2:Int=0 // getter와 setter가 모두 생성되는 var 변수는 밑줄이 표시됨
        // 멤버 변수: 멤버변수는 var 또는 val로 자유롭게 생성 가능함
        // 자료형은 초기값에 따라 결정되도록 생략 가능함
        // 코틀린 클래스에서 생성도니 멤버변수는 기본적으로 private로 생성됨
        // 멤버메서드
        fun testMethod1(){
            println("testMethod1")
        }
        fun testMethod2(){
            println("testMethod2")
        }
    }

    'Kotlin' 카테고리의 다른 글

    [Kotlin] Extends  (0) 2022.09.14
    [Kotlin] Constructor  (0) 2022.09.14
    [Kotlin] Array  (0) 2022.09.14
    [Kotlin] Loop  (0) 2022.09.14
    [Kotlin] 익명함수  (0) 2022.09.14

    댓글

Designed by Tistory.