Kotlin, 클래스의 기본
속성값만 있는 클래스
class Person (var name: String, val birthYear: Int)
fun main() {
var a = Person("박보영", 1990)
println("안녕하세요. ${a.birthYear}년생 ${a.name}입니다")
}
내부 매서드 없이 속성값만 가지는 클래스는 위에서 처럼 선언 될 수 있다.
하지만 대부분의 클래스는 매서드를 함께 가지고 있다.
일반적인 클래스
class Person (var name: String, val birthYear: Int) {
fun introduce() {
println("안녕하세요. ${birthYear}년생 ${name}입니다")
}
}
fun main() {
var a = Person("박보영", 1990)
a.introduce()
}
매서드는 클래스의 {} 내부에 위치하고, 함수를 선언 해주는 것과 동일하게 만들어 준다.
클래스의 생성자
'class Person (var name: String, val birthYear: Int)' 부분에서
'(var name: String, val birthYear: Int)' 부분이 생성자를 정의하는 부분이다.
클래스의 속성을 선언함과 동시에 생성자를 선언하는 방법이다.
기본 생성자
Kotlin에서는 'init'이라는 특수한 함수를 클래스 내부에 정의해서 생성자를 통해 인스턴스가 만들어 질 때 일정한 동작을 할 수 있도록 지원한다.
class Person (var name: String, val birthYear: Int) {
init {
println("안녕하세요. ${this.birthYear}년생 ${this.name}입니다")
}
fun introduce() {
println("안녕 날 소개하지.")
}
}
fun main() {
var a = Person("박보영", 1990)
a.introduce()
}
보조 생성자
기본 생성자외의 보조 생성자는 아래와 같이 만들 수 있다.
중요한 점은 보조 생성자를 만들 때에는 반드시 기본 생성자를 호출하여 속성들을 초기화해주어야 한다.
방법은 보조 생성자 뒤에 ': this(속성1, 속성2, ...)' 을 사용하면 된다.
class Person (var name: String, val birthYear: Int) {
// 기본 생성자
init {
println("안녕하세요. ${this.birthYear}년생 ${this.name}입니다")
}
// 보조 생성자
constructor(name:String) : this(name, 1997) {
println("보조 생성자가 사용되었습니다.")
}
fun introduce() {
println("안녕 날 소개하지.")
}
}
fun main() {
var a = Person("박보영") // 보조 생성자를 사용해서 인스턴스 생성
a.introduce()
}
클래스의 상속
Kotlin은 기본적으로 클래스의 상속이 막혀있다.
클래스를 상속하기 위해서는 'open' 키워드를 사용해야한다
// 상속을 위해 'open' 키워드 사용
open class Animal(var name:String, var age:Int, var type:String) {
fun introduce() {
println("타입:${type}, 이름:${name}, 나이:${age}")
}
}
class Dog (name:String, age:Int) : Animal (name, age, "dog") {
fun bark() {
println("멍멍")
}
}
class Cat (name:String, age:Int) : Animal (name, age, "cat") {
fun meow() {
println("야옹")
}
}
fun main() {
var a = Dog("별이", 5)
var b = Cat("냥이", 7)
a.introduce()
a.bark()
b.introduce()
b.meow()
}
수퍼 클래스의 속성을 서브클래스에서 다시 선언 할 수 없기 때문에 Cat에는 'var'이나 'val' 키워드를 사용하지 않는다.
서브 클래스로 인스턴스를 생성할 때에는 반드시 수퍼 클래스의 생성자를 호출해주어야 한다.
class Cat (name:String, age:Int) : Animal (name, age, "cat")
Author And Source
이 문제에 관하여(Kotlin, 클래스의 기본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yebali/Kotlin-흐름제어와-논리연산저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)