1. ์์ฑ์
: ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋ ์ต์ด๋ก ์คํํ ๋ก์ง ์์ฑ
(์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ณผ์ st... ๋ถ์ด๋นต ํ์ ๊ฐ์ง๊ณ ๋ถ์ด๋นต ์ฐ์ด๋ด๋)
1) ๊ธฐ๋ณธ ์์ฑ์
: ํด๋์ค ์ด๋ฆ ์์ ์์ฑ์๋ฅผ ์ํ ์ธ์๋ฅผ ์
๋ ฅ๋ฐ์ ์ด๊ธฐํ (ํจ์์ ์ ์ฌ)
class ํด๋์ค์ด๋ฆ1(temp:String){
var myTemp = temp
}
fun main(){
val ex1 = ํด๋์ค์ด๋ฆ1("๊ฐ")
}
2) ๋ช ์์ ์์ฑ์
(1) ์ฃผ ์์ฑ์ Init
: { } ์ด๊ธฐํ ๋ธ๋ก ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด ์คํ๊ณผ ํจ๊ป ์๋์คํ๋จ
- ํ ๊ฐ์ง์ ํํ๋ก ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋
- ํด๋์ค ์ ์ธ๋ถ์ ์์ฑ์๋ฅผ ๋ช
์ํจ
- ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ๋๊ธฐ์ง ์์
@@@ ํด๋์ค ์ด๋ฆ์ ()์ ์ ๋ ์์๋๋ก ํ๋์ ๋ณ์๊ฐ ์ฑ์์ง๋๊ฑฐ ๋ง๋?? ->> ์ด๊ฑด ๋ค๋ฅธ๊ฑฐ... ์ฝ๋ ์ ๋ฆฌํ๊ธฐ
// ํด๋์ค ์ ์ธ๋ถ์ ์์ฑ์๋ฅผ ๋ช
์ํจ
class Character(_name:String, _hairColor:String, _height:Double) {
//_ ๋ ๋งค๊ฐ๋ณ์์์ ๋ํ๋ด๊ธฐ ์ํ ํ์. this.์ฒ๋ผ ๊ตฌ๋ณํ๋ ๋๊ตฌ
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
// ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ๋๊ธฐ์ง์์
init {
println("๋งค๊ฐ๋ณ์์๋ ์์ฑ์ ์คํ ์๋ฃ!")
}
fun fireBall() {
println("ํ์ด์ด๋ณผ!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("์๋ก์ด ๋ฌด๊ธฐ์ธ ${device3}์
๋๋ค")
return device3
}
}
class ํด๋์ค์ด๋ฆ2(_temp:String){
var myTemp:String
init{
myTemp = _temp
}
}
fun main(){
val ex2 = ํด๋์ค์ด๋ฆ2("๋")
}
class Birt(var name:String, var wing:Int, var color:String){
//๋งค๊ฐ๋ณ์ ์์ var์ ์ฌ์ฉ, ์ ์ธ๋จ!!
fun fly() = println("$wing")
}
fun main(){
val sparrow = Birt("mySparrow", 2, "red")
sparrow.color = "blue"
println("${sparrow.color}")
sparrow.fly()
}
(2) ๋ถ ์์ฑ์ Constructor //java๋ ํท๊ฐ๋ฆผ... ๊ฐ๋ ๋น๊ตํ๊ธฐ..
(+) ์ ๋ ฅ ์ธ์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ ๋ง๋ค ์ ์์
class ํด๋์ค์ด๋ฆ3 { //ํด๋์ค ์ด๋ฆ ์์ด ์๋!!
var myTemp : String
constructor(_temp:String){
myTemp = _temp
}
}
fun main(){
var ex3 = ํด๋์ค์ด๋ฆ3("๋ค")
}
2. ๊ฐ์ฒด
: ํด๋์ค ํ์ ์ผ๋ก ์ค์ฒดํ๋, ์ ์ธ๋ ๊ฒ๋ค. ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ํฌํจ
- ํด๋์ค๋ฅผ ์ค์ฒดํํด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ
- ์ ๋ณด, ํ์๊ฐ ๊ทธ๋๋ก ๋ก๋ฉ๋๋ ๊ฒ ์๋. ์์น์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉํจ
- ๊ฐ์ฒด์ ์์น์ ๋ณด๋ฅผ ๋ณ์์ ์ ์ฅํ ๋ค, ์ฐธ์กฐํจ
open class Person{
constructor(firstName: String){
println("[Person] firstname: $firstName")
}
constructor(firstName: String, age: Int){ //5๋ฒ์งธ
println("[Person] firstName: $firstName, $age") //6๋ฒ์งธ
}
}
class Developer : Person{
constructor(firstName: String) : this(firstName, 10){ //1๋ฒ์งธ : 2๋ฒ์งธ
println("[Developer] $firstName") //8๋ฒ์งธ
}
constructor(firstName: String, age: Int) : super(firstName, age){ //3๋ฒ์งธ : 4๋ฒ์งธ
println("[Developer] $firstName, $age") //7๋ฒ์งธ
}
}
fun main(){
val choi = Developer("Choi") // 9๋ฒ์งธ = 0๋ฒ์งธ
}
//[Person] firstName: Choi, 10
//[Developer] Choi, 10
//[Developer] Choi
//๋ง์ฝ ์ฃผ์์ฑ์๊ฐ ์๋ค๋ฉด this()
class Person(firstName: String, out: Unit = println("[Primary Constructor] Parameter")) {
val fName = println("[Property] Person fName: $firstName") //ํ๋กํผํฐ์ ์ถ๋ ฅ๋ฌธ ํ ๋น
init{
println("[init] Person init block")
}
//๊ทธ๋ผ, ์ฌ๊ธฐ์ ์ฒ ์ด, 20์ด firstName, age์๋ ๋ค์ด์ ์๋๊ฑด๊ฐ?@@ ์ด ๊ฐ์ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๊น ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ณ์๋ฅผ ๋ฐ์์ ์ฐ๋๊ฑฐ...?
constructor(firstName: String, age: Int, out: Unit = println("[Secondary Constructor] Parameter")): this(firstName){
println("[Secondary Constructor] Body: $firstName, $age")
}
}
fun main(){
val p1 = Person("์ฒ ์ด", 20)
println()
val p2 = Person("๋ฏธ์ ")
}
//[Secondary Constructor] Parameter
//[Primary Constructor] Parameter
//[Property] Person fName: ์ฒ ์ด
//[init] Person init block
//[Secondary Constructor] Body: ์ฒ ์ด, 20
//[Primary Constructor] Parameter
//[Property] Person fName: ๋ฏธ์
//[init] Person init block
//out์ ํค์๋ ์ธ์. ์ธ์์ ์ ๊ทผํ ๋, ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ println()์ด ๋์ํ๊ฒ ๋จ
* ์ต๋ช ๊ฐ์ฒด
interface Switcher{
fun on(): String
}
class Smartphone(val model: String){
fun powerOn(): String{
class Led(Val color: String){
fun blink(): Stirng = "Blinking $color on $model"
}
val powerStatus = Led("Red")
val powerSwitch = object : Switcher{ //์ต๋ช
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด switcher์ on() ๊ตฌํ
override fun on(): String{
return powerStatus.blink()
}
}//์ต๋ช
(object)๊ฐ์ฒด ๋ธ๋ก์ ๋
}
}
- ์ธํฐํ์ด์ค์ ๋ฉ์๋ ๊ตฌํ์ ์ต๋ช ๊ฐ์ฒด ์์์ ํด๋ ๋จ (๋ฐ์ ๋ฐ๋ก ๋ง๋ ๊ฑธ ๋ฐ์์๋ ใฑใ )
'์ธ์ด > Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Kotlin ๋ฌธ๋ฒ ์ข ํฉ] - ์ค๋ฒ๋ผ์ด๋ฉ, ์ค๋ฒ๋ก๋ฉ # ์์ ํ๊ธฐ (0) | 2024.03.05 |
|---|---|
| [Kotlin ๋ฌธ๋ฒ ์ข ํฉ] - ์์ (0) | 2024.03.05 |
| [Kotlin ๋ฌธ๋ฒ ์ข ํฉ] - ๋ฉ์๋, ํด๋์ค (0) | 2024.03.05 |
| [Kotlin ๋ฌธ๋ฒ ์ข ํฉ] - ์กฐ๊ฑด์, ๋ฐ๋ณต๋ฌธ (0) | 2024.03.05 |
| [Kotlin ๋ฌธ๋ฒ ์ข ํฉ] - ๋ณ์์ ์์, ์ฐ์ฐ์ (0) | 2024.03.05 |