클래스를 이용한 객체 생성
// 참조 변수 선언시 클래스 타입 생략가능
// 참조 변수에는 객체의 아이디 정보가 들어있다.
val obj1:TestClass1 = TestClass()
클래스 내부에 내용이 없다면 {}는 생략 가능하다
class TestClass2
constructor(v1:Int, v2:Int){
println("매개 변수가 두 개인 생성자")
this.v1 = v1
this.v2 = v2
}
or
class TestClass(var a1:Int, var a2:Int)
기본 생성자 외에 추가적인 생성자를 정의할 때는 클래스 이름 옆에 정의한 생성자를 반드시 호출해야 한다.
constructor(a1:Int) : this(a1,200){
println("매개 변수가 있는 생성자 호출")
}
멤버 변수는 전부 private 변수이다.
// field는 변수를 의미한다.
var v3 = 0
get() {
println("getter 호출")
return field
}
set(value){
println("setter 호출")
if(value in 1..10){
field = value
}
}
val v4 = 0
get(){
println("getter 호출 v4")
return field
}
클래스
private : 파일이 같을 경우에만 사용이 가능하다.
public : 패키지, 모듈이 달라도 사용이 가능하다.
internal : 패키지, 모듈이 다르면 사용이 불가능하다.
변수, 메서드
private : 모든 경우에 사용이 불가능하다.
public : 모든 경우에 사용이 가능하다.
protected : 상속 관계에서만 사용이 가능하다. 패키지, 모듈이 달라도 사용 가능하다.
internal : 모듈이 다르면 사용이 불가능하다.