💌 클래스

📌 클래스 선언

💜 클래스 선언

class Myclass{}

💜 객체 생성

fun main(args: Array<String>){
	val obj = MyClass()	// 클래스 이용시 객체 생성
}

생성자

  • 객체 생성될 때 호출되는 함수

💜 주 생성자

  • constructor
  • 하나의 클래스에 하나만 정의 가능
  • 클래스 헤드 선언 부분에 작성
  • 보조 생성자가 있으면 꼭 작성안해도 됨
class User1 constructor(name: String, age: Int){ }
// 별도 수식 구문이 없으면 예약어 생략 가능
class User2 (name: String, age: Int){ 
	val name: String = "kim"
	init{	// 초기화 블록에선 주생성자 실행영역이므로 매개변수 이용
    		println("i am init.. : $name..$age")
   	}
    	fun hello(){	// 클래스의 프로퍼티 이용
        	println("hello $name")
        }
}

val user1 = User1()		// 인수 전달 안해서 에러, 기본값 명시했을땐 에러 X
val user2 = User1("kkang", 33)

🖥
i am init.. kkang, 33
hello kim

💜 보조 생성자

  • 클래스 몸체에 생성
// 매개변수 없는 주 생성자 자동 추가
class User1{ }
// 주 생성자만 선언
class User2 (name: String){ }
// 보조 생성자만 선언
class User3{
	constructor(name: String){}
}

fun main(args: Array<String>){
    val user1 = User1()
    val user2 = User2("kkang")
    val user3 = User3()		// 매개변수가 없는 생성자가 존재안해서 에러
}

1) 생성자 오버로딩

class User4{
	constructor(){}
    constructor(name: String){}
    constructor(name: String, age: Int){}
}

💜 this()에 의한 생성자 연결

class User1(name: String){
    init {
        println("init block..$name")
    }
    constructor(name: String, age: Int):this(name){
        println("constructor..$name..$age")
    }

}
fun main (args: Array<String>){
    println("-주생성자로 생성-")
    val user1 = User1("kkang")
    println("-보조생성자로 생성-")
    val user2 = User1("kkang",22)
}

🖥
-주생성자로 생성-
init block..kkang
-보조생성자로 생성-
init block..kkang
constructor..kkang..22

profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글