Kotlin Bootcamp for Programmers: Defining Classes

OvO·2020년 7월 13일
0
post-thumbnail

Object Orinented Terminology

  • Class - Object Blueprint(Aquarium Plan)

  • Object - Instance of a Class (Actual Aquarium)

  • Property - Class characteristic (Aquarium width, height)

  • Method - Class Function (fillWithWater())

  • Interface - Specification a Class can implement (clean)

Class

package Aquarium

//kotlin에서는 visibility의 default값은 public
class Aquarium {

    var width: Int = 20
    var height: Int = 40
    var length: Int = 100

    //사용자한테는 이 volume라는 값만 중요하고 계산은 별로 중요하지 않음
    //fun volume() = width  * height * length / 1000
    // 그래서 변수로 만들자

    var volume: Int
        get() = width * height * length / 1000  //단일표현식
        set(value) {height = (value * 1000) / (width * length)}//관례적으로 setter의 매개변수이름은 value이다
}

Main

package Aquarium

fun main (args: Array<String>){
    buildAquarium()
}

fun buildAquarium(){
    val myAquarium = Aquarium()

    println("Length: ${myAquarium.length} " +
            "Width: ${myAquarium.width} " +
            "Height: ${myAquarium.height}")

    myAquarium.height = 80

    println("Height: ${myAquarium.height} cm")
    println("volume: ${myAquarium.volume}")

    myAquarium.volume = 80
    println("Height: ${myAquarium.height} cm")
}

출력결과

Length: 100 Width: 20 Height: 40
Height: 80 cm
volume: 160
Height: 40 cm

Package Visibility

  • kotlin에서는 default가 public
  • public: 어디에서나 보임
  • private: 선언을 포함하는 파일 내부에서만 보임
  • internal: 같은 모듈일 경우 보임(모듈은 같이 컴파일 되는 코틀린 파일 셋)

Class visbility

  • kotlin에서는 default가 public
  • public: 누구든지 클래스와 클래스 멤버를 볼 수 있음
  • private: 클래스 내부에서만 볼 수 있음. #서브 클래스에서도 접근 불가
  • protected: private에서 서브 클래스에서 접근 기능 추가
  • internal: 같은 모듈일 경우 보임
profile
이유재입니다.

0개의 댓글