-
코틀린 퀴즈 -1 컬렉션, 생성자, 추상클래스, 인터페이스Client/Android 2020. 3. 12. 03:01
🔥 Problem 1
코틀린에서는 컬렉션에 자료 수정 가능여부를 제한할 수 있다.
1-1. List 자료구조를 사용하여 aList를 생성하라. String 타입이다. 리스트에 값3개를 초기화한다.
1-2. 초기화 후 리스트에 "data" 값을 추가하려한다. aList.add("data") 👉가능할까?
1-3. 가능하다면 이유가 무엇인가? 불가능하다면 리스트를 어떻게 수정해야할까?
🔥 Problem 2
생성자의 인자를 통해 바로 클래스 내부의 프로퍼티에 값을 할당하는 코드를 작성하시오. -시연
class의 이름은 Foo이며 두개의 프로퍼티를 갖는다.
첫번째 프로퍼티의 타입은 Int, 이름은 a 이고 한번 할당되면 값을 바꿀 수 없다.
두번째 프로퍼티의 타입은 String, 이름은 b 이고 할당 된 후에도 값 수정이 가능하다.
🔥 Problem 3
Shape 인터페이스를 작성하는데 한 개의 프로퍼티와 두개의 함수를 가지고 있다. -찬영
프로퍼티의 타입은 Int이고 이름은 width 이고, 수정이 가능한 값이다.
첫번째 함수의 타입은 Double 이고 이름은 getWidth 이다. 이 함수에는 구현부를 만들지마라.
두번째 함수의 타입은 Unit 이고 이름은 islarge 이다. 이 함수에는 구현부를 만드는데 아무것도 넣지마라.🔥 Problem 4
해당 추상 클래스와 인터페이스의 인스턴스를 생성하시오 -시연
(단, 인스턴스의 이름은 foo 이며 한번 할당 되면 수정이 불가능하다.)
4-1)
추상 클래스는 다음과 같이 선언되어 있다.
abstract class Foo {
abstract fun bar()
}4-2)
인터페이스는 다음과 같이 선언되어 있다.
interface Bar {
fun baz()
}답
🍀 Solution 1
1-1
aList.add("dd"); val aList : List = listOf("aa", "bb", "cc");
1-2
불가능하다. 그 이유는 List 인터페이스는 불가변이기 때문이다. 즉, 값을 수정할 수 없다.1-3
val bList : MutableList = arrayListOf("aa", "vv", "cc"); bList.add("data"); // MutableList이기 때문에 추가 가! 능!
🍀 Solution 2
class Foo (val a : Int, var b : String)
🍀 Solution 3
interface Shape{ var width : Int fun getWidth() : Double fun isLarge() {} }
👉 구현부 {}가 존재하지 않으면 반드시 구현해야한다. 즉, width와 getWidth()는 반드시 구현해야한다.
구현부{} 가 존자하는 isLarge()는 구현이 되어있기 때문에 반드시 구현할 필요가 없다.
🍀 Solution 4
4-1
val foo = object : Foo(){ override fun bar() }
💥주의💥
추상클래스는 클래스이기 때문에 반드시 인스턴스 생성 시 Foo() 맞음. Foo 아님. 생성자를 사용한다.
4-2val foo = object : Bar { override fun baz() }
💥주의💥
인터페이스는 인터페이스 이름 형태로 인스턴스 생성. Bar() 아님. 그냥 Bar
반응형'Client > Android' 카테고리의 다른 글
코틀린 퀴즈 -3 확장함수,제네릭, 고차함수, 람다 (0) 2020.03.12 코틀린 퀴즈 -2 제네릭, 주생성자, 확장함수, 익명함수, 엘비스 연산자 (0) 2020.03.12 [Kotlin] 커니의 코틀린-(8) 코틀린 안드로이드 익스텐션 (0) 2020.03.11 [Kotlin] 커니의 코틀린-(4) 코틀린 표준 라이브러리 (0) 2020.03.11 커니의 코틀린-(2) 자바와 비교해보는 코틀린 컬렉션, 클래스, 인터페이스, 싱글톤, 제네릭, 널 안전성 (0) 2020.02.28