2022. 12. 5. 14:09γ_Study/AndroidStudio
π₯ μμκ³Ό μμ±μ π¸.•*¨*•¸.•*¨*•¸.•*¨*•¸.•*¨*• π₯
μ½νλ¦°μμ μ΄λ€ ν΄λμ€λ₯Ό μμλ°μΌλ €λ©΄ μ μΈλΆμ μ½λ‘ (:) κ³Ό ν¨κ» μμλ°μ ν΄λμ€ μ΄λ¦μ μ λ ₯νλ€.
μ½νλ¦°μ ν΄λμ€λ κΈ°λ³Έμ μΌλ‘ λ€λ₯Έ ν΄λμ€κ° μμν μ μλ€.
λ€λ₯Έ ν΄λμ€μμ μμν μ μκ² μ μΈνλ €λ©΄ open ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
μμ ν΄λμ€λ₯Ό μμλ°μ νμ ν΄λμ€μ μμ±μμμλ μμ ν΄λμ€μ μμ±μλ₯Ό νΈμΆν΄μΌνλ€.
package com.example.ch3
open class Super{
}
class Sub: Super(){
}
//λ§€κ° λ³μκ° μλ μμ ν΄λμ€μ μμ±μ νΈμΆ
open class Super2(name: String){
}
class Sub2(name: String): Super2(name){
}
//νμ ν΄λμ€μ 보쑰 μμ±μλ§ μλ κ²½μ° μμ ν΄λμ€μ μμ±μ νΈμΆ
open class Super3(name: String){
}
class Sub3 :Super3{
constructor(name: String): super(name){
}
}
fun main(){
}
μ€λ²λΌμ΄λ© - μ¬μ μ
μμ ν΄λμ€μ μ μλ λ©€λ² (λ³μ, ν¨μ)λ₯Ό νμν΄λμ€μμ μμ μ λ©€λ²μ²λΌ μ¬μ©ν μ μλ€. μ΄λ₯Ό ν΅ν΄ μμ ν΄λμ€μ μ μΈλ λ³μλ ν¨μλ₯Ό κ°μ μ΄λ¦μΌλ‘ νμν΄λμ€μ λ€μ μ μΈνλλ° μ΄λ₯Ό μ€λ²λΌμ΄λ© μ΄λΌκ³ νλ€. μμνκΈ° μν μμν΄λμ€λ₯Ό openμΌλ‘ μ΄κ³ λ°λ κ³³μμ overrideλ₯΄ μμ±νλ©΄ λλ€.
package com.example.ch3
open class Super{
open var superData =10
open fun superFun(){
println(" i am superFun $superData")
}
}
class Sub : Super()
fun main(){
var obj = Sub()
obj.superData = 30
obj.superFun()
}
ν λ§λλ‘ μ¬μ¬μ©
package com.example.ch3
open class Super{
open var superData =10
open fun superFun(){
println(" i am superFun $superData")
}
}
class Sub : Super(){
override var superData = 20
override fun superFun() {
println("i am sub class function : ${superData}")
}
}
fun main(){
var obj = Sub()
obj.superFun()
}
μ κ·Ό μ νμ
ν΄λμ€μ λ©€λ²λ₯Ό μΈλΆμ μ΄λ λ²μκΉμ§ μ΄μ©νκ² ν κ²μΈμ§ κ²°μ νλ ν€μλμ΄λ€.
μ κ·Ό μ νμ | μ΅μμμμ μ΄μ© | ν΄λμ€ λ©€λ²μμ μ΄μ© |
public | λͺ¨λ νμΌμμ κ°λ₯ | λͺ¨λ ν΄λμ€μμ κ°λ₯ |
internal | κ°μ λͺ¨λλ΄μμ κ°λ₯ | κ°μ λͺ¨λλ΄μμ κ°λ₯ |
protected | μ¬μ© λΆκ° | μμ κ΄κ³μ νμ ν΄λμ€μμλ§ μ¬μ©κ°λ₯ |
private | νμΌ λ΄λΆμμλ§ μ΄μ© | ν΄λμ€ λ΄λΆμμλ§ μ΄μ© |
λ°μ΄ν° ν΄λμ€ : dataν€μλλ‘ μ μΈ
VO(value-object) ν΄λμ€λ₯Ό νΈλ¦¬νκ² μ΄μ©ν μ μλ λ°©λ²μ μ 곡νλ€.
equals() ν¨μλ μ£Ό μμ±μμ μ μΈν λ©€λ² λ³μμ λ°μ΄ν°λ§ λΉκ΅ λμμΌλ‘ μΌλλ€. μ¦, 보쑰 μμ±μμ μΆκ°μ μΈ μ 보λ λΉκ΅νμ§ μλλ€. lateinit varλ..
κ°μ²΄μ λ°μ΄ν°λ₯Ό λ°ννλ ν¨μλ toSring() ν¨μμ΄λ€. μ΄ ν¨μλ‘ λ°μ΄ν° ν΄λμ€λ₯Ό μ¬μ©νλ©΄μ κ°μ²΄κ° κ°μ§λ κ°μ νμΈν΄μΌ ν λ μ΄λ₯Ό μ΄μ©νλ€.
μ€λΈμνΈ ν΄λμ€
μ€λΈμνΈ ν΄λ μ€ : μ΅λͺ ν΄λμ€λ₯Ό λ§λ€ λͺ©μ μΌλ‘ μ¬μ©νλ€.
μ μΈκ³Ό λμμ κ°μ²΄λ₯Ό μμ±νλ€λ μλ―Έμμ objectλΌλ ν€μλλ₯Ό μ¬μ©νλ€. νμ μ λͺ μνμ§ μμΌλ©΄ Any νμ μΌλ‘ μ·¨κΈλλ©° κ°μ²΄ λ©€λ²κ° μμ΄ μ€λ₯κ° λ°μνλ€.
μ€λΈμ νΈ ν΄λμ€ νμ μ object λ€μ μ½λ‘ (:)μ μ λ ₯νκ³ κ·Έ λ€μ ν΄λμ€μ μμ ν΄λμ€ λλ μΈν°νμ΄μ€λ₯Ό μ λ ₯νμ¬ μ§μ νλ€. λ°λ‘ μ¬μ©ν μ μλ€.
package com.example.ch3
open class Super{
open var data =10
open fun some(){
println("i am super some() $data")
}
}
val obj = object :Super(){
override var data =20
override fun some(){
println("i am object some() $data")
}
}
fun main() {
obj.data =30
obj.some()
}
μΊ ν¨λμΈ ν΄λμ€
μΊ ν¨λμΈ ν΄λμ€λ κ°μ²΄λ₯Ό μμ±νμ§ μκ³ λ©€λ² λ³μλ ν¨μλ₯Ό ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Όνκ³ μ ν λ μ¬μ©νλ©° companion μ΄λΌλ ν€μλλ‘ μ μΈνλ€.
package com.example.ch3
class MyClass{
companion object{
var data =10
fun some() {
println(data)
}
}
}
fun main() {
MyClass.data = 20
MyClass.some()
}