GDSC HUFS 4기/Kotlin Team #3

[3팀] Android-12-kotlin Interface and Abstract class

qkrgusqls 2022. 10. 7. 09:44

 

이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.

작성자 : 박현빈 

개발환경은 Windows, Android Studio입니다. 

1. 인터페이스 

클래스 기능을 확장하기 위한 것! 코틀린의 인터페이스는 자바와 매우 비슷하다.

코드 작성시 앞에 interface{ }라는 키워드를 붙여주면 된다. 

 

 

인터페이스의 이점

코드의 재사용성이 올라간다. 인터페이스를 통해 코드가 간결해진다는 것이다. 또 인터페이스를 이용해서 클래스 간의 의존성을 제거가능하다. 코틀린에서는 자바와 다르게 클래스에서 부모 클래스를 상속할 때는 1개의  클래스만 가능하다. 하지만 인터페이스를 활용시 다중 상속이 가능해진다! 그렇기 때문에 협업시에 유용하다.

 

2. 추상클래스

추상클래스는 인터페이스와 비슷한듯 다르다! 추상클래스는 단일 상속만 가능하다. 

 

인터페이스 vs 추상클래스

인터페이스는 state를 저장할 수 없고, 여러 인터페이스를 구성할 수 있다. 그렇지만 클래스는 한개만 구성이 가능하다.

추상클래스는 인터페이스가 추가할 수 있는 모든 것을 할 수 있고, state를 잘 저장할 수 있다.

 

3. 형변환

if (input is String) { //is로 자료형 체크
	val output2: String = input as String} //as로 any 자료형을 string으로 변환

 

<any> : 객체가 어느 것이든지 받아들이겠다

  • toByte() : Byte로 변환
  • toShort() : Short로 변환
  • toInt() : Int로 변환
  • toLong() : Long으로 변환
  • toFloat() : Float으로 변환
  • toDouble() : Double로 변환
  • toChar() : Char로 변환

Quiz 1. 이 클래스에서 object/distance를 생성하는 방법은 무엇입니까?

class Person(var firstName: String, var lastName: String) {
    init {
        println("Initialized a new Person object with firstName = $firstName and lastName = $lastName")
    }
}

var Denis = Person("Denis", "Panjuta")

string타입으로 firstname과 lastname을 받아와야한다.

 

Quiz 2. 함수와 메서드의 차이는 무엇입니까? 

메서드는 클래스에 정의된 함수입니다. 

 

Quiz 3. 어떤 클래스의 변수, 메서드, 생성자 등을 일컫는 말이 무엇입니까?

members

Quiz 4. 객체가 생성될 때 특정 코드를 직접 실행하기 위해 무엇을 사용하시겠습니까?

The Initializer

Quiz 5. 인터페이스에 오류가 있나요?

interface Drivable{
    val maxSpeed: Double
    fun drive(): String
}

인터페이스는 함수나 클래스를 구현할 필요가 없기 때문에 오류가 없습니다.

인터페이스를 사용하는 클래스가 기능을 해야합니다.