학습내용
- 클래스
- 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 |