객체지향 용어
class study{ 
 ....
 ....
}
class Student { // 클래스의 정의
    // 프로퍼티들(속성)
    var name: String = "gil dong"
    var age: Int = 24
    // 메서드들(함수)
    fun name() = println("Student name: $name")
}
fun main(){
	val student = Student() // 객체 생성
    student.age = 26 // 값 할당
    println("student name: "${student.name}) // 객체의 맴버 프로퍼티 읽기
    student.name() // 객체의 맴버 메서드 사용
}
▪️ 인스턴스
- student 클래스는 틀일 뿐이다. 실제 메모리에서 실행되고 있는 것이 아니다.
 - Heap 메로리에 올라간 객체를 인스턴스라 부른다.
 - java는 new 키워드를 통해 Object를 생성하지만, 코틀린은 별도의 키워드를 사용하지 않는다.
 
class Student (var name:String, var age:Int){  // 주 생성자 
    fun name() = println("Student name / age: $name / $age")
    
}
fun main(){
	val student = Student("gil dong", 24) // 객체 생성
}
주 생성자 , 부 생성자 동시 선언 가능
class Student (var name:String){ // 주 생성자
    var age:Int = 0
    constructor(name:String, age:Int) : this(name){  // 부 생성자
        this.age = age
    }
    fun name() = println("Student name / age: $name / $age")
}
fun main(){
    val student = Student("gil dong", 24) // 객체 생성
    student.name()
}
class Student (_name:String){ // 주 생성자
    var name:String = _name
    var age:Int = 0
    constructor(_name:String, _age:Int) : this(_name){  // 부 생성자
        this.age = _age
    }
    fun name() = println("Student name / age: $name / $age")
}
fun main(){
    val student = Student("gil dong", 24) // 객체 생성
    student.name()
}
class Student (_name:String){ 
    var name:String = ""
    var age:Int = 0
	init{
    	this.name = _name
        println("name: "+this.name)
    }
    constructor(_name:String, _age:Int) : this(_name){  // 부 생성자
        this.age = _age
    }
    fun name() = println("Student name / age: $name / $age")
}
fun main(){
    val student = Student("gil dong", 24) // 객체 생성
    student.name()
}
/*
init 호출
init name: gil dong
부 생성자 호출
Student name / age: gil dong / 24
 */
init{ }은 객체가 만들어질때 제일 먼저 호출된다.
class Student (var name:String="hoon", var age:Int){  // 주 생성자
    fun name() = println("Student name / age: $name / $age")
}
fun main(){
    val student = Student(age=24) // 객체 생성
    student.name()
}
default 값 이외의 값은 "변수명=값" 형태로 입력