언어/Kotlin
Kotlin class
JAON
2021. 3. 5. 00:30
Class
package com.example.myapplication.kotlin
fun main(array: Array<String>) {
val smallCar: Car = Car("V8 engine", "small")
val bigCar = Car("V8 engine", "big")
val superCar: SuperCar = SuperCar("good engine", "big", "black")
}
class Car(var engine: String, var body: String) { //constructor 축약버전
}
class SuperCar {
var engine: String = ""
var body: String = ""
var door: String = ""
constructor(engine: String, body: String, door: String) {
this.engine = engine
this.body = body
this.door = door
}
}
class Car1 constructor(engine: String, body: String) {
var door: String = ""
//생성자
constructor(engine: String, body: String, door: String) : this(engine, body) {
this.door = door
}
}
class Car2 {
var engine: String = ""
var body: String = ""
var door: String = ""
constructor(engine: String, body: String) {
this.engine = engine
this.body = body
}
constructor(engine: String, body: String, door: String) {
this.engine = engine
this.body = body
this.door = door
}
}
class RunnableCar constructor(engine:String,body:String) {
fun ride() {
println("탑승")
}
fun drive() {
println("Go")
}
fun navi(destination:String) {
println("$destination 으로 목적지 설정")
}
}
class RunnableCar2 {
var engine: String = "" // default는 public 멤버변수
var body: String = ""
constructor(engine: String, body: String) {
println("RunnableCar2의 생성자가 호출되었습니다.")
this.engine = engine
this.body = body
}
init { //해당 클래스가 생성되기전(생성자가 호출되기전)에 호출되는 함수
println("RunnableCar2의 init함수가 호출되었습니다.")
}
fun ride() {
println("탑승")
}
fun drive() {
println("Go")
}
fun navi(destination: String) {
println("$destination 으로 목적지 설정")
}
}
class OverloadingTestClass() {
val a: Int = 10
fun overloadingTest(a: Int) { //오버로딩
println("Up")
}
fun overloadingTest(a: Int, b: Int) { //오버로딩
println("Down")
}
}
class Tv(val channels: List<String>) {
var onOff: Boolean = false
var currentChannelNumber = 0
set(value) { //currentChannelNumber 의 값이 할당될때 호출된다.
field = value
//currentChannelNumber = value -> 해당 부분에서 set함수가 다시 호출되기에 무한루프가 발생한다.
if (field > channels.size-1) {
field = 0
}
if (field <0) {
field = channels.size -1
}
}
get() { //currentChannelNumber의 값이 호출될때 실행
println("호출되었습니다.")
return field
}
fun switch() {
onOff = !onOff
}
fun chennalUp() {
currentChannelNumber += 1
}
fun channelDown() {
currentChannelNumber -= 1
}
fun checkCurrentChannel(): String {
return channels[this.currentChannelNumber]
}
}