클래스 사용 (클래스 내부에 정의된 변수와 함수 사용)
ⓐ 생성자를 통해 변수에 저장된 클래스의 인스턴스는 내부에 정의된 변수와 함수를 도트 연산자(.)로 접근할 수 있다.
class Pig {
var name: String = "Pinky"
fun printName(){
Log.d("class", "Pig의 이름은 ${name}입니다.")
}
}
2. 위에서 정의한 클래스를 생성자로 다음과 같이 인스턴스화해서 변수에 담는다.
var pig = Pig() // 생성자를 호출하여 인스턴스를 만들고, 클래스를 다시 변수화하여 거기에 담기
ⓑ 오브젝트(생성자 호출X->바로 사용) = 인터페이스 상속 시에도 호출없이 바로 사용
⇒ 오브젝트(Object)를 사용하면 클래스 생성자로 인스턴스화 하지 않아도 블록 안의 프로퍼티와 메서드를 호출해서 사용할 수 있다. (Java의 static과 같은 역할)
object Pig{
var name: String = "Pinky"
fun printName() {
Log.d("class", "Pig의 이름은 ${name}입니다.")
}
}
Pig.name = "Mikey"
Pig.printName()
class Pig {
companion object {
var name: String = "None"
fun printName(){
Log.d("class", "Pig의 이름은 ${name}입니다.")
}
}
fun walk() {
Log.d("class", "Pig가 걸어갑니다.")
}
}
// companion object 안의 코드 사용하기 ⇒ 바로 사용
Pig.name = "Linda"
Pig.printName() // Pig의 이름은 Linda입니다.
// companion object 밖의 코드 사용하기 ⇒ 생성자 호출하여 사용
val cutePig = Pig()
cutePig.walk() // Pig가 걸어갑니다.