Kotlin에서 모든 Class는 기본적으로 final Class를 가진다.
만약 하나의 Class를 상속받거나 하려면 open이라는 예약어를 사용하면 된다.
이렇게 오류가 나지만
Phone Class에 open을 붙여주면
오류가 사라진다.
package com.example.hellokotlin
/*
클래스 선언시 기본값을 상속을 받지 못하게 되어 있다.
마치 java에서 final class Phone{} 처럼
상속을 받을 수 있게 하려면 open이라는 예약어를 붙여준다.
*/
open class Phone{
fun call(){
println("전화를 걸어요!")
}
}
class HandPhone : Phone(){ //Phone 클래스를 상속 받기
fun mobileCall(){
println("이동중에 전화를 걸어요!")
}
}
아래 코드는 Phone 클래스를 상속 받은 클래스로 생성한 객체이기에 2개의 메서드를 모두 사용할 수 있는 코드이다.
Kotlin에서 인터페이스만들기
Class자리에 interface라는 예약어를 넣어주면된다.
//Kotlin에서 인터페이스 만들기
interface Remocon{
fun up()
fun down()
}
Java에서는 인터페이스를 구현하기 위해 Implement를 사용했지만 Kotlin에서는 " : " 을사용해 인터페이스를 구현한다.
package com.example.hellokotlin
//Kotlin에서 인터페이스 만들기
interface Remocon{
fun up()
fun down()
}
//인터페이스를 구현한 클래스 만들기
class MyRemocon : Remocon{
override fun up() {
TODO("Not yet implemented")
}
override fun down() {
TODO("Not yet implemented")
}
}
클래스를 정의함과 동시에 객체를 생성하는 것이 object키워드 이다.
val r2:Remocon = object : Remocon{
override fun up() {
TODO("Not yet implemented")
}
override fun down() {
TODO("Not yet implemented")
}
}
추상 클래스 AbstractClass
//추상 클래스 => abstract 예약어를 이용해서 만든다.
abstract class Weapon {
fun move(){
println("이동합니다.")
}
//추상 메서드 역시 abstract 예약어를 이용해서 만든다.
abstract fun attack()
}
class MyWeapon : Weapon(){
override fun attack() {
println("무언가를 공격해요!")
}
}
Java랑 별로 다를 것이 없다.
Kotlin의 다형성
//다형성
val w3 = MyWeapon() //w3에는 MyWeapon객체의 참조값이 들어 있다.
val a:MyWeapon=w3 //w3는 당연히 MyWeapon type이다.
val b:Weapon=w3 //w3는 Weapon type이기도하다.
val c:Any=w3 //Any type은 Java에서 Object type에 해당되는 type이다.
여기서 중요한건 Any type인데 어떤타입의 변수라도 담을 수 있다.
var d:Any = 10
d = true
d = "kim"
d = w3
java에서
class Util{
public static int number = 10
public String version = "1.0"
public static void get(){}
public void send(){}
}
가 있을 때 send라는 메서드를 호출하기 위해서는
new Util().send();로 호출해야한다.
version 객체는
new Util().version;
static인 int number객체는
Util.number
그리고 get을 호출하려면(static)
Util.get();이런 식으로 호출한다.
Kotlin은 그럼 어떤 식으로 호출이 가능할까?
먼저 Kotlin에는 static이라는 예약어는 없다.
이럴때는 Kotlin에 있는 companion object(동반객체)를 사용하면된다.
class Util{
//Util클래스와 함께하는 동반객체
companion object{
//동반객체의 필드와 메서드(함수)를 정의하면 된다.
val version:String="1.0"
fun send(){
println("전송합니다")
}
}
'수업내용' 카테고리의 다른 글
20230801 Kotlin (0) | 2023.08.01 |
---|---|
20230731 Kotlin (0) | 2023.08.01 |
20230728 Kotlin (0) | 2023.07.28 |
20230727 Android (0) | 2023.07.28 |
20230727 Kotlin Function (0) | 2023.07.27 |
댓글