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)
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이다
}
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