본문 바로가기

안드로이드/Kotlin

[Kotlin] 클래스

학습내용

  •  클래스
    • class를 통해 선언 가능
    • 변수가 클래스 최상위에 존재하는 경우 Property라고 한다.
    • 함수가 클래스에 존재하는 경우 Method라고 한다.
    • 클래스는 Properties와 Methods의 모음이라고 볼 수 있다.
  • 클래스 사용 방법
    • 초기화 블록 init {}
    • companion object {} 블록으로 감싸서 멤버들을 초기화 없이 사용할 수 있다.
  • 객체 사용 방법
    • 변수처럼 생성하면 된다. (new 키워드 X)
    • 생성자를 통해 생성하는 순간 인스턴스가 된다.
    • 생성자를 호출하면 초기화 블록을 실행한다.
  • 상속의 목적
    • 기존의 코드를 재활용하기 위함
    • 계층 구조를 사용하기 위함
    • 다형성을 활용하기 위함
  • 상속 사용 방법
    • 부모 클래스는 open 키워드를 사용해서 상속할 수 있게 함.
    • 자식 클래스는 ":" 를 사용하여 상속 가능
    • 또한 부모 클래스의 값을 사용하기 위해 생성자를 상속 받아야 함.
    • Java에서 생성자에 super를 넣는 것과 동일
    • 메서드를 재정의할 때는 부모 클래스는 open 키워드를, 자식 클래스는 override 키워드를 붙이면 됨.

소스 코드

package com.kangwlgns.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.kangwlgns.myapplication.databinding.ActivityMainBinding

val TAG = "MainActivity"

class MainActivity : AppCompatActivity() {
    val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        var c = Child("김현진", 25)
        var p = Parent("강지훈", 25)
        var poly: Parent = Child("다형성", 100)

        c.intro()
        c.hi()
        c.bye()
        p.intro()
        p.hi()
//        p.bye()
        poly.intro()
        poly.hi()
//        poly.bye()
    }
}

open class Parent(name: String, age: Int) {
    private var name: String
    private var age: Int

    init {
        this.name = name
        this.age = age
    }

    open fun intro() {
        Log.d(TAG, "이름은 " + name + ", 나이는 " + age.toString() + "입니다.")
    }

    fun hi() {
        Log.d(TAG, "Hi")
    }
}

class Child(name: String, age: Int) : Parent(name, age) {
    override fun intro() {
        Log.d(TAG, "개인정보입니다.")
    }

    fun bye() {
        Log.d(TAG, "Bye")
    }
}

 


Reference

강의

'안드로이드 > Kotlin' 카테고리의 다른 글

[Kotlin] 함수  (0) 2024.05.15
[Kotlin] ActivityMainBinding 에러  (0) 2024.04.30
[Kotlin] 조건문  (0) 2024.04.30
[Kotlin] 변수와 상수  (0) 2024.04.22
[Kotlin] 문법 기초  (0) 2024.04.21