1. μ€λ²λΌμ΄λ©
: μμλ°μ λΆλͺ¨ν΄λμ€μ μ 보(νλ‘νΌν°)λ νμ(λ©μλ) μ¬μ€κ³
= 리λνμΈ...?
- λ°λ μΈμμ κ°μ, νμ
κ°μ
- λΆλͺ¨ ν΄λμ€μ λ©μλμ κ°μ μ΄λ¦μ κ°μ§ νλμ ν¨μλ§μ κ°μ§
= λΆλͺ¨ ν΄λμ€μ λ©μλμλ λ€λ₯Έ λ©μλκ° λ κ²
(+) μμ ν΄λμ€λ§μ μ 보, λμμ λ§λ€ μ μμ
(+) μ¬μ¬μ©μ±, μΌκ΄μ± λ±μ μ₯μ μ μ§
*μ€λ²λΌμ΄λ© λ¨μΆν€
Control + O
fun main() {
var bird = Bird("μ")
var chicken = Chicken("λ", 2)
bird.fly()
chicken.fly()
}
open class Bird(name:String) { //open μμ±
var name: String = ""
init {
this.name = name
}
open fun fly() { //λ©μλμμλ openμ μ¨μΌνλλ―
println("${name}μ λ μμ~")
}
}
class Chicken(name: String, age: Int) : Bird(name) {
var age:Int = 0
init { //λΆλͺ¨ν΄λμ€μ init μμΌλ μ¬κΈ°λ..?
this.age = age
}
override fun fly() {
// λΆλͺ¨κ°μ²΄μ flyλ©μλλ₯Ό λΆλ₯΄λ νμμ. μ΄κ±Έ ν¬ν¨νλ €λ©΄ μμ±νκΈ°
// super.fly()
println("${age}μ΄μ ${name}κ° λ μλ΄
λλ€~ κΌ¬λΌμ€!")
}
}
*super μ μ°λ μ΄μ λ₯Ό λ μ°Ύμλ΄€λλ°
// super.λ©μλμ΄λ¦() --> λ΄λΆμ μΌλ‘ μμλ°μΌλ©΄ μλμΌλ‘ λ§λ€μ΄μ§λ λΆλͺ¨κ°μ²΄. = λΆλͺ¨κ°μ²΄μ λ©μλλ₯Ό λΆλ¬λΌ
//κ·ΈλΌ μ€λ²λ‘λ© νμλ super μ°λ? νμΈνκΈ°@@@ --> λ±ν μ°μ§ μμλ... λ€λ₯Έ λ©μλκ° μλλΌ. μλ°λ‘ λ°κΎΈλ©΄ λνλλλ°
| μ½νλ¦°μμλ `super` ν€μλλ₯Ό μ¬μ©νμ¬ λΆλͺ¨ ν΄λμ€μ μμ±μλ λ©μλλ₯Ό νΈμΆν νμκ° μλ κ²½μ°κ° μλλ°, κ·Έ μ΄μ λ λ€μκ³Ό κ°μ΅λλ€: 1. **κΈ°λ³Έ μμ±μ νΈμΆ**: μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°μ λ, λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μκ° νΈμΆλ©λλ€. μ΄λ μ½νλ¦°μμ κΈ°λ³Έμ μΌλ‘ μ 곡λλ λμμ λλ€. λ°λΌμ λλΆλΆμ κ²½μ°μλ λͺ μμ μΌλ‘ `super` ν€μλλ₯Ό μ¬μ©νμ§ μμλ λ©λλ€. 2. **λ©μλ μ€λ²λΌμ΄λ©**: λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μμ ν΄λμ€μμ μ€λ²λΌμ΄λν λμλ `super` ν€μλλ₯Ό μ¬μ©νμ§ μμλ λ©λλ€. λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό νΈμΆνλ €λ©΄ `super`λ₯Ό μ¬μ©ν μ μμ§λ§, κ·Έλ μ§ μμ κ²½μ°μλ μμ ν΄λμ€μμ μ€λ²λΌμ΄λλ λ©μλκ° νΈμΆλ©λλ€. 3. **λΆλͺ¨ ν΄λμ€ μμ±μ νΈμΆ**: λ§μ½ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό μ€λ²λΌμ΄λνκ±°λ μΆκ°μ μΈ μμ±μλ₯Ό μ μν λμλ `super` ν€μλλ₯Ό μ¬μ©νμ¬ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό λͺ μμ μΌλ‘ νΈμΆν΄μΌ ν©λλ€. νμ§λ§ μ½νλ¦°μμλ μμ±μ νΈμΆμ κ°λ¨ν μ²λ¦¬νκΈ° λλ¬Έμ, `super` ν€μλλ₯Ό μ¬μ©νμ§ μκ³ λ λΆλͺ¨ ν΄λμ€μ μμ±μκ° μλμΌλ‘ νΈμΆλ©λλ€. κ²°λ‘ μ μΌλ‘, μ½νλ¦°μ λͺ μμ μΈ `super` νΈμΆμ μ΅μννμ¬ μ½λλ₯Ό κ°κ²°νκ² λ§λ€ μ μλλ‘ μ€κ³λμμ΅λλ€. λ°λΌμ λλΆλΆμ κ²½μ°μλ `super`λ₯Ό μ¬μ©νμ§ μμλ λ©λλ€. |
(...λΌλλ° μ΄κ±΄ μ‘°κΈ λ λΉκ΅ν΄μ μ 리ν΄μΌν λ―. μλ°λ c++μ΄λ λ€ μμ¬μ λ€μ£½λ°μ£½μ΄λ€)
- object ννμμ μ¬μ©ν΄ νμ ν΄λμ€ λ§λ€μ§ μκ³ ν΄λμ€μ νΉμ λ©μλ μ€λ²λΌμ΄λ©νκΈ°
//μ΅λͺ κ°μ²΄ : μ΄λ¦μ΄ μλ ν΄λμ€ μΈμ€ν΄μ€ λ§λ€κΈ°.
open class Hero(){
fun work() = println("working")
open fun fly() = println("flying")
}
fun main(){
val person = object: Hero(){ //object ννμμΌλ‘ fly() ꡬνμ μ¬μ μ
override fun fly() = println("not flying")
}
person.work()
person.fly()
}
//working
//not flying
(1) νμ©μ¬λ‘ 1
window.addMouseListener(object: MouseAdapter){
override fun mouseClicked(e: MouseEvent){
...
}
override fun mouseEntered(e: MouseEvent){
...
}
}
- object: MouseAdapterλΌλ ꡬ문μ MouseAdapter ν΄λμ€λ₯Ό μμνλ μ΅λͺ
κ°μ²΄λ₯Ό μμ±.
(MouseAdapter ν΄λμ€λ MouseListener μΈν°νμ΄μ€μ ꡬνμ μ 곡νλ μΆμ ν΄λμ€)
μ΅λͺ
κ°μ²΄λ₯Ό μμ±ν¨μΌλ‘μ¨, νμν λ©μλλ§ μ€λ²λΌμ΄λνμ¬ ν΄λΉ μ΄λ²€νΈλ₯Ό μ²λ¦¬ν μ μμ.
(μμ μ½λμμλ mouseClickedμ mouseEntered λ©μλλ₯Ό μ€λ²λΌμ΄λνμ¬ κ°κ° λ§μ°μ€ ν΄λ¦ λ° μ§μ
μ΄λ²€νΈλ₯Ό μ²λ¦¬ν¨)
MouseListener μΈν°νμ΄μ€λ₯Ό μ§μ ꡬννλ λμ μ΅λͺ
κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ κ°κ²°νκ² μ½λλ₯Ό μμ±ν μ μμ
(2) νμ©μ¬λ‘ 2 - λ¨ ν λ² μ¬μ©ν μΈν°νμ΄μ€μ ꡬν ν΄λμ€ μ μ μμ΄ μ¬μ©νκΈ°
interface Shape{
fun onDraw() //ꡬνν΄μΌ ν λ©μλ
}
val triangle = object: Shape{
override fun onDraw(){
//μ¬κΈ°μ λ¨ ν λ² κ΅¬νν¨
}
}
(3) νμ©μ¬λ‘ 3 - κ°μ²΄λ νμνμ§λ§ μμ μΈν°νμ΄μ€, ν΄λμ€κ° μλ κ²½μ°
fun foo(){
val adHoc = object{
var x: Int = 0
var y: Int = 0
}
print(adHoc.x + adHoc.y)
}
2. μ€λ²λ‘λ©
: λ§€κ°λ³μμ κ°μ, μλ£νμ λ€λ₯΄κ² ν΄ λλͺ
μ λ€λ₯Έ λ©μλλ₯Ό λ§λ λ€
//λ°νμλ£νμ μ€λ²λ‘λ©μ μν₯μ μ£Όμ§ μμ
- λ°λ μΈμ, κ°μ λ±μ΄ λ¬λΌμ§
//λ§€κ°λ³μμ κ°μ λ±μ λ°λΌ μ΄λκ²μ΄ μ°μΌμ§κ° κ²°μ λ¨
- μμ κ΄λ ¨ --> μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ ν¨μμ κ°μ μ΄λ¦μ κ°μ§ λ κ°μ ν¨μλ₯Ό κ°μ§
//νλλ λΆλͺ¨ ν΄λμ€μ μ μλμ΄μκ³ , λλ¨Έμ§λ μμ ν΄λμ€μ μ μλ¨
fun main() {
var calc = Calculator() //κ°μ²΄ λ§λ€κΈ°
var intResult = calc.add(1,2)
var doubleResult = calc.add(1.2, 2.2)
println("μ μ λ§μ
κ²°κ³Ό: ${intResult}")
println("μ€μ λ§μ
κ²°κ³Ό: ${doubleResult}")
}
class Calculator {
fun add(num1: Int, num2: Int): Int {
return num1+num2
}
fun add(num1: Double, num2: Double): Double {
return num1+num2
}
}
class Point(var x: Int = 0, var y: Int = 10) {
// plus ν¨μμ μ°μ°μ μ€λ²λ‘λ©
operator fun plus(p: Point) : Point {
return Point(x + p.x, y + p.y)
}
operator fun dec() = Point(--x, --y)
}
fun main() {
val p1 = Point(3, -8)
val p2 = Point(2, 9)
var point = Point()
println(point.y)
println(p1.x)
point = p1 + point
println("point = (${point.x}, ${point.y})")
point = p1 + p2 // Point κ°μ²΄μ + μ°μ°μ΄ κ°λ₯νκ² λμλ€.
println("point = (${point.x}, ${point.y})")
--point // -- μ°μ°μ
println("point = (${point.x}, ${point.y})")
}
10
3
point = (3, 2)
point = (5, 1)
point = (4, 0)
'μΈμ΄ > Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [Kotlin λ¬Έλ² μ’ ν©] - μ κ·Όμ νμμ κ΄λ ¨ μ©μ΄ μ 리 (0) | 2024.03.06 |
|---|---|
| [Kotlin λ¬Έλ² μ’ ν©] - μΈν°νμ΄μ€, μΆμ ν΄λμ€ (0) | 2024.03.05 |
| [Kotlin λ¬Έλ² μ’ ν©] - μμ (0) | 2024.03.05 |
| [Kotlin λ¬Έλ² μ’ ν©] - μμ±μ, κ°μ²΄ (#λΉκ΅ μΆκ°νκΈ°) @@ μ§λ¬ΈνκΈ°! (0) | 2024.03.05 |
| [Kotlin λ¬Έλ² μ’ ν©] - λ©μλ, ν΄λμ€ (0) | 2024.03.05 |