ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코틀린 퀴즈 -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-2

    val foo  = object : Bar {    
    	override fun baz() 
    }

    💥주의💥 

    인터페이스는 인터페이스 이름 형태로 인스턴스 생성. Bar() 아님. 그냥 Bar 

     

    반응형
Designed by Tistory.