728x90
반응형
클래스와 상속
클래스란?
간단히 말하면 어떤 변수와 그 변수를 사용하는 기능(메서드)들을 묶어둔 것이다.
클래스 기본구조
fun main() {
Person("서현",22).introduce()
}
class Person(var name:String, var age:Int)
{
fun introduce()
{
println("안녕하세요 ${this.name}입니다 나이는 ${this.age} 입니다.")
}
}
다음과 같이 Person 클래스를 생성하고, introduce라는 메서드를 만들어서 사용할 수 있다.
클래스 생성자
생성자란?
새로운 인스턴스를 만들기위해 호출하는 함수로 초기화 기능과 인스턴스 생성시 수행할 구문을 작성 할 수 있다.
아래와 같이 init 함수 안에 생성시 초기화 할 구문을 넣어 구현할 수 있다.
fun main() {
Person("서현",22).introduce()
}
class Person(var name:String, var age:Int)
{
init {
println("${this.name}님이 생성")
} // 이 부분이 생성자 함수이다.
fun introduce()
{
println("안녕하세요 ${this.name}입니다 나이는 ${this.age} 입니다.")
}
}
init 과 같이 초기화 하는 것을 기본생성자라고 하고,필요에 따라 constructor을 통해 보조생성자를 생성 할 수 있다.
클래스와 상속
상속을 하는 이유
1. 이미 있는 class에서 기능을 확장해서 사용하기 위해서이다.
2. 여러개 class들의 공통 기능을 묶어 관리하기 위해서이다.
상속에서의 약속
1. 서브 class는 슈퍼class와 동일한 이름을 가질 수 없다.
2. 슈퍼 clsdd앞에 open을 해주어야 상속이 가능하다. *코틀린은 상속 금지가 기본값이다.
3. 서브 class는 슈퍼 class의 생성자를 호출한다.
fun main() {
Animal("코코",5,"개").introduce()
Dog("코코",5).introduce()
Dog("코코",5).bark()
}
open class Animal (var name:String, var age:Int, var type:String)
{
fun introduce() {
println("저는 ${type}이고, ${age}살 입니다. ")
}
}
class Dog(name:String, age:Int):Animal(name,age,"개")
{
fun bark() {
println("멍멍")
}
}
위 코드와 같이 Animal 클래스를 상속받은 Dog 클래스를 생성 할 수 있다.
Dog 클래스는 Animal 클래스를 상속받아 introduce() 를 사용할 수 있고, bark() 라는 나만의 메서드를 만들어 사용할 수도 있다.
728x90
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] isNullOrBlank vs isNullOrEmpty 헷갈리지말자 (0) | 2023.08.30 |
---|---|
[Kotlin] 코틀린의 sealed class 란? (0) | 2023.08.15 |
[Kotlin 문법] 스코프함수 (0) | 2023.01.06 |
[Kotlin 문법] 오버라이딩과 추상화 (0) | 2023.01.06 |