λ°κ²½μ‘μ E.B
Android <3> Classes and objects λ³Έλ¬Έ
𧣠π«₯ 11μμ΄λκΉ!!
---μμ±μ λ΄μ© μ 리λ-----
𧣠Inheritance(μμ)
: κΈ°μ‘΄μ ν΄λμ€λ₯Ό " νμ₯ " ν μλ‘μ΄ ν΄λμ€ [μ¬μ¬μ© λ©μ»€λμ¦]
π«₯ μμ+a λ°λ‘ μκΈ°
* μμμ λμλ€ μ€, κ°μ²΄λ₯Ό μμ±ν μ μλ κ²μ 무μμΌκΉ?
: κ°μ²΄ μμ± = λͺ¨λ(κ°, λμ) ꡬνλ κ² = μΌλ° ν΄λμ€λ§ κ°λ₯
π«₯ λ¨μΌ μμκ³Ό λ€μ€ μμ
* μ½νλ¦°μ λ¨μΌμμ, λ€μ€κ΅¬νμ΄ κ°λ₯ν μΈμ΄λ€!
λ¨μΌ μμ : μ΄λ€ ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ₯Ό ν λ²μ νλλ§ μμνλ κ²½μ°
λ€μ€ μμ : μ΄λ€ ν΄λμ€κ° λ κ° μ΄μμ ν΄λμ€λ‘λΆν° μμλ°λ κ²½μ°
-> λ€μ€ μμμ΄ μΌκΈ°ν μ μλ λ¬Έμ "λ€μ΄μλͺ¬λ μμ λ¬Έμ "
𧣠기쑴 ν΄λμ€ νμ₯μ λ°©λ²
1) Override : λ³κ²½
2) MEM νλ‘νΌν° μΆκ°
π«₯ open ν€μλ
- μ½νλ¦°μ ν΄λμ€λ κΈ°λ³Έμ μΌλ‘ μμμ΄ λΆκ°λ₯ => open ν€μλλ‘ μμμ΄ κ°λ₯νλλ‘ ν΄μ€μΌ ν¨.
- μΆμ(abstract) ν΄λμ€ νμ open => open ν€μλλ₯Ό λͺ μνμ§ μμλ λ¨.
-μμ
μμ ν΄λμ€μΈ Aquarium μμ±νκΈ°
open class Aquarium(open var length: Int = 100, open var width: Int = 20, open var height: Int = 40) {
open var volume: Int
get() = width * height * length / 1000
set(value) {
height = (value * 1000) / (width * length)
}
open val shape = "rectangle"
open var water: Double = 0.0
get() = volume * 0.9
fun printSize() {
println(shape)
println("Width: $width cm " +
"Length: $length cm " +
"Height: $height cm ")
// 1 l = 1000 cm^3
println("Volume: $volume liters Water: $water liters (${water / volume * 100.0}% full)")
}
}
fun buildAquarium() {
val aquarium6 = Aquarium(length = 25, width = 25, height = 40)
aquarium6.printSize()
}
fun main() {
buildAquarium()
}
: shape, volume λ±μ νλ‘νΌν°λ‘ κ°λ Aquarium ν΄λμ€λ₯Ό μμ±ν΄λ΄€μ©λ€
↓
Aquariumμ μμ λ°λ TowerTank ν΄λμ€ μμ±νκΈ°
class TowerTank (override var height: Int, var diameter: Int): Aquarium(height = height, width = diameter, length = diameter) {
override var volume: Int
// ellipse area = π * r1 * r2
get() = (width/2 * length/2 * height / 1000 * PI).toInt()
set(value) {
height = ((value * 1000 / PI) / (width/2 * length/2)).toInt()
}
override var water = volume * 0.8
override val shape = "cylinder"
}
: height νλ‘νΌν°μ κ²½μ°, constructor(μμ±μ) μμμ μ μλμκΈ° λ¬Έμ, μ΄λ₯Ό μμλ°μΌλ €λ©΄ override ν€μλλ₯Ό μμ λΆμ¬μ€μΌ ν¨! -> λͺ μμ μΌλ‘ μ μΈλΌμΌ ν¨.
*λ°λ©΄, diameter νλ‘νΌν°μ κ²½μ°, μμ ν΄λμ€(Aquarium)μμ μ μλ κ²μ΄ μλλκΉ override μ λΆμ¬λ λ¨~
π«₯ μΆμν΄λμ€μ νλ‘νΌν°/ν¨μ
- abstract ν€μλλ₯Ό νμ X : μΆμX -> νμ ν΄λμ€κ° νλ‘νΌν°/λ©μλλ₯Ό κ·Έλλ‘ μ¬μ©O ; overrideλ‘ λ³κ²½λ κ°λ₯
- abstract ν€μλλ₯Ό νμ O : νμ ν΄λμ€μμ λ°λμ ꡬνλμ΄μΌ ν¨. (μΆμ λ©€λ² κ΅¬μ²΄ν) ; overrideλ‘ κ΅¬ν νμ
π«₯ μΈν°νμ΄μ€
- ν΄λμ€λ μΈν°νμ΄μ€μμ μ μλ λ©μλλ₯Ό ꡬνν¨μΌλ‘μ¨ κΈ°λ₯ νμ₯ κ°λ₯
- λ€μ€ μΈν°νμ΄μ€ ꡬν κ°λ₯ ( *ν΄λμ€λ λ¨μΌ μμλ§ κ°λ₯ but μ¬λ¬ μΈν°νμ΄μ€ ꡬν κ°λ₯)
-μμ
interface FishAction {
fun eat()
}
class Shark: AquariumFish(), FishAction {
override val color = "grey"
override fun eat() {
println("hunt and eat fish")
}
}
class Plecostomus: AquariumFish(), FishAction {
override val color = "gold"
override fun eat() {
println("eat algae")
}
}
: Sharkμ Plecostomus ν΄λμ€ λͺ¨λ FishAction μΈν°νμ΄μ€λ₯Ό ꡬννκ³ μλ€μ ,,
π§£κ·Έλ λ€λ©΄ μΌλ° ν΄λμ€, μΆμ ν΄λμ€, μΈν°νμ΄μ€λ μΈμ μ¬μ©νλκ°?
----- extension func κ³Ό mem funx λΉκ΅λ ----
μνμ΄ κΏλ¬μ΅.. ν μ μνκΈ°κ°μ΄ λ μ’μ΄λ€... μ λ§ λ± μν 곡λΆλ§ νλ©΄ λλκΉ............................γ ..............
νΉμ μΈκ³ μλꡬμ.. λ€λμ€... ^.... ^
μκΎΈ λ¨μλ§λ€ ννΈ λͺ κ°μ© λΉΌλ¨Ήκ² λλλ°,,, 11μ μμ λ€ μ±μ°λλ‘ ..νκ² μ΅λλ€ νμ΄ν .>!
'GDSC > Android' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Android <5> Layouts & Tip(ν) κ³μ°κΈ°π’ (0) | 2023.11.18 |
---|---|
Android <4> Build your first Android app: [Dice Rollerπ²] (1) | 2023.11.17 |
Android <2> More About Kotlin Functions (1) | 2023.10.14 |
Android <2> Kotlin Functions - (Almost) Everything has a value! (0) | 2023.10.07 |
Android <1> Kotlin Basic - Benefits of Kotlin (0) | 2023.09.18 |