클래스, 인스턴스 어디서 많이 들어본 개념이다. 처음 c++에서 배웠을 때 어려워했던 개념인 객체에 대한 내용임을 알 수 있다. 그러면 코틀린에서도 어떻게 사용하는지 정리해보겠다.
가장 대중적으로 쓰이는 예시인 car를 이용해서 정리해보자
class Car {
var color : String = ""
var speed : Int = 0
fun upSpeed(value : Int){
if(speed + value >= 200)
speed = 200
else
speed = speed + value
}
fun downSpeed(value : Int){
if(speed - value <= 0)
speed = 0
else
speed = speed - value
}
//여기까지 기본 생성 부분
//인스턴스 생성 예시1
//var myCar1 : Car = Car()
//myCar1.color = "빨강"
//myCar1.speed = 0
//생성자 추가
constructor(color: String, speed: Int){
this.color = color
this.speed = speed
}
//생성자를 생성했기에 위의 인스턴스 생성 예시1를 아래와 같이 변경해야함.
var myCar1 : Car = Car("빨강", 0)'
//메소드 오버로딩
//한 클래스 내에서 메소드의 이름이 같아도 파라미터의 개수나 데이터 형식만 다르면 여러 개를 선언할 수 있음
constrctor(speed: Int){
this.speed = speed
}
}
위와 같은 코드를 통해 가볍게 복습을 할 수 있다.
정적 필드 : 인스턴스를 생성하지 않고 클래스 자체에서 사용되는 변수
정적 메소드 : 메소드 또한 {}안에 작성하면 됨. 인스턴스 생성하지 않고도 클래스명.메소드명()으로 사용 가능
추상 클래스 : 인스턴스 생성 불가. abstract 붙여서 지정함.
인스턴스화 : var myCar1 : Car = Car("빨강", 0)
추상 메소드 : 본체가 없는 메소드, 메소드 앞에 abstract 붙여서 지정함.
추상을 통해 -> 다형성을 이용한 개발이 가능함!
인터페이스 : 추상 클래스와 성격이 비슷함. 상속 X, 구현 O, 코틀린은 다중 상속을 지원하지 않음.
abstract class Animal {
var name : String = ""
abstract fun move()
}
interface iAnimal {
abstract fun eat()
}
class iCat : Animal(), iAnimal {
override fun eat()
println("생선을 좋아한다.")
override fun move(){
println("네 발로 이동한다.")
}
}
'안드로이드 프로그래밍📱 > Kotlin📲 개념' 카테고리의 다른 글
[Kotlin] 함수 (0) | 2025.02.13 |
---|---|
[Kotlin] 배열 (0) | 2025.02.11 |
[Kotlin] 조건문:if, when (0) | 2025.02.11 |
[Kotlin] 변수& 데이터 개념 정리 (0) | 2025.02.11 |