클래스 선언
코틀린의 클래스는 전역이기 때문에 패키지 내에서만 적용되는 디폴트 클래스가 없다.
클래스는 Property 와 Method로 이루어져있다.
class Human{
val name = "joyce" // property 정의
fun eatingCake(){
println("Yummu")
}
}
fun main()
val human = Human() // 객체 생성 과정
human.eatingCake() // 객체가 클래스 내부의 메소드 활용과정
객체 생성 과정
만약에 프로퍼티를 객체 생성할때 정의하고 싶다면?
constructor를 이용한다.
class Human /*생략가능*/constructor(name : String){
//class Human (val name : "Annonymous") name을 정의하는것.//
fun eatingCake(){
println("Yummu")
}
}
fun main()
val human = Human("TS") // 객체 생성시 name을 넣어주면 객체 생성과 동시에 프로퍼티가 정의된다.
val stranger = Human() // Annonymous
human.eatingCake()
코드 블록을 사용하고싶으면 init을 이용하자.
class Human constructor(name : "Annonymous"){
init {
println("New human has been born!!"
}
fun eatingCake(){
println("Yummu")
}
}
fun main()
val human = Human("TS") // 객체 생성시 name을 넣어주면 객체 생성과 동시에 프로퍼티가 정의된다.
val stranger = Human() // Annonymous
human.eatingCake()
//결과값
New human has been born!!
New human has been born!!
Yummu
class KotlinSample
constructor (val a : String){
constructor(a:String, b:String): this(a)
fun print(){
println("Out $a, $b"
}//b의 변수를 지정해주지 않았기 때문에 에러.
//선언 방식.
코틀린은 1개의 primary constructor이 만들어지고
class Kotlinsample constructor(val a : string)
여러개의 secondary constructor이 만들어 질 수 있다.
class Human (val name : String " Annonymous"){
//age라는 부생성자 생성, this(name)으로 주생성자 위임
constructor(name : String,age : Int): this(name){
println("my name is${name}, ${age}years old")
}
init{
println("New humans has been born!!")
}
fun eatingCake(){
println("Yummy")
}
}
fun main(){
val mom = Human("JS",59)
println("this human's name is ${stranger.name}")
}
// New humans has been born!!
// my name is JS , 59 years old
class Sample(val name : String){
init{
println("name $name")
}
// name 만 출력
constructor(name:String, name2:String):this(name)
println("name $name name $name2")
}
//
1개의 Primary Consructor
N개의 secondary constructor
secondary constructor를 위해서는 primary constructor을 호출해야한다.
primary constructor을 위한 init{} block을 제공한다.
primary constructor와 함께 오는 변수는 전역이다.
primary constructor은 디폴트값을 정의할 수 있다.
Class : 틀
Object : 틀에 의해 생성된 객체
Instance : 생성된 객체를 지칭하는 단어