Android

[Kotlin] μ½”ν‹€λ¦° μƒμ„±μž ( Constructor )

Forest Yun 2021. 6. 18. 17:59
728x90

클래슀(섀계도) -λ§Œλ“œλŠ”λ²•/μ •μ˜ (μƒμ„±μž)-객체(집)

​

​

μžλ°”μ—μ„œλŠ” "ν΄λž˜μŠ€μ΄λ¦„(λ§€κ°œλ³€μˆ˜)" ν˜•νƒœλ‘œ μƒμ„±μžλ₯Ό λ§Œλ“€κ³ , overloading ν•˜μ—¬ μƒμ„±μžλ₯Ό μ—¬λŸ¬κ°œ λ‘˜ 수 μžˆλ‹€.(λ§€κ°œλ³€μˆ˜μ˜ 수 λ˜λŠ” νƒ€μž… λ“±μ˜ 차이λ₯Ό 두어 μ„œλ‘œ 같지 μ•Šκ²Œ ν•œλ‹€.)

​

​

​

μƒμ„±μž: 값을 섀정해쀄 수 μžˆλ‹€.

​

클래슀 전체 μ½”λ“œ

class MyFriendParans (var name:String?, var age:Int?, private var address:String?){ var pet:Boolean?=null //첫번째 호좜 //μ‹œμž‘λ  λ•Œ, 객체가 λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ 호좜됨 init { this.name="읡λͺ…" //μ™ΈλΆ€μ—μ„œ μ–΄λ–€ 값을 주더라도 "읡λͺ…"으둜 μ„€μ • } //λ‘λ²ˆμ§Έ 호좜 //μΆ”κ°€ μƒμ„±μž: 기쑴에 있던 것에 μΆ”κ°€λ‘œ λ°›κΈ° //μΆ”κ°€λœ 뢀뢄을 μ œμ™Έν•˜κ³  기쑴에 있던 λ§€κ°œλ³€μˆ˜λŠ” λ°˜ν™˜ν•΄μ•Όν•œλ‹€. constructor(name:String?, age:Int?, address:String?, pet:Boolean?) : this(name,age, address){ this.pet=pet } }

​


​

primary constructor 은 클래슀 이름(λ§€κ°œλ³€μˆ˜)둜 ν•œλ‹€.

class MyFriendParans (var name:String?, var age:Int?, private var address:String?)

​

​

secondary constructor(μΆ”κ°€ μƒμ„±μž)은 constructor ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©° primary construct의 λ§€κ°œλ³€μˆ˜μ— μΆ”κ°€λ‘œ λ§€κ°œλ³€μˆ˜λ₯Ό μž‘μ„±ν•œλ‹€. μΆ”κ°€λœ 뢀뢄을 μ œμ™Έν•œ 기쑴의 λ§€κ°œλ³€μˆ˜λŠ” this(λ§€κ°œλ³€μˆ˜) 둜 λ°˜ν™˜ν•΄μ•Όν•œλ‹€. μ΅œμƒμœ„ constructorμ—μ„œλ§Œ val/var λ³€μˆ˜λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.(μ „μ—­ λ³€μˆ˜ μ—­ν• ) μΆ”κ°€λœ λ§€κ°œλ³€μˆ˜λŠ” ν•„μˆ˜λŠ” μ•„λ‹ˆλ‹€.

constructor(name:String?, age:Int?, address:String?, pet:Boolean?) : this(name,age, address){ this.pet=pet }

​

​

​

객체 생성(κΈ°λ³Έ μƒμ„±μž)

var myFriend2=MyFriendParans("κΉ€μ² μˆ˜",110,"λΆ€μ‚°")

(μΆ”κ°€ μƒμ„±μž μ‚¬μš©)

var myFriend3=MyFriendParans("κΉ€μ² μˆ˜",110,"λΆ€μ‚°", true)

​

​

​


​

​

​

μ½”ν‹€λ¦°μ—μ„œλŠ” μ΄ˆκΈ°ν™” 블둝(initializer block)을 톡해 μ΄ˆκΈ°ν™” λ‘œμ§μ„ μΆ”κ°€ν•  수 μžˆλ‹€.

init{}은 μ‹œμž‘ν•  λ•Œ 즉 객체가 λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ 호좜되며 값을 μ„€μ •ν•  수 μžˆλ‹€. μƒμ„±μžμ—μ„œ 기본으둜 값을 μ„€μ •ν•˜κ³ μž ν•  λ•Œ init{}을 μ‚¬μš©ν•˜μ§€ μ•Šκ³ λ„ λ°”λ‘œ μ„€μ •κ°€λŠ₯ν•˜λ‹€.

init { this.name="읡λͺ…" //μ™ΈλΆ€μ—μ„œ μ–΄λ–€ 값을 주더라도 "읡λͺ…"으둜 μ„€μ • }

​

​

​

​

λ§€κ°œλ³€μˆ˜κ°€ λ³΅μž‘ν•  λ•Œμ—λŠ” 쑰금 더 μœ μ—°ν•˜κ²Œ 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ””μžμΈ νŒ¨ν„΄, λΉŒλ” νŒ¨ν„΄μ„ μ‚¬μš©ν•œλ‹€.

​

​

​

​

https://www.youtube.com/watch?v=CbMCvZJxUZU&t=148s

μ°Έκ³  κ°•μ˜

https://thdev.tech/kotlin/2017/03/09/Kotlin-Constructor-Init/

참고 자료

https://shinjekim.github.io/kotlin/2019/09/02/Kotlin-%EC%BD%94%ED%8B%80%EB%A6%B0%EC%9D%98-%EC%83%9D%EC%84%B1%EC%9E%90(Constructor)/

참고 자료

728x90