ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] ์ ‘๊ทผ์ œํ•œ์ž, property, get(), set()
    Android/Kotlin 2021. 7. 5. 01:18
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ "์œค์žฌ์„ฑ์˜ Google ๊ณต์‹ ์–ธ์–ด Kotlin" ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ์ ‘๊ทผ์ œํ•œ์ž

    • kotlin์€ private, public, protected, internal 4๊ฐ€์ง€์˜ ์ ‘๊ทผ์ œํ•œ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    • kotlin์€ Java์™€ ๋‹ค๋ฅธ์ ์€ ํŒจํ‚ค์ง€์™€๋Š” ๊ด€๊ณ„๊ฐ€ ์—†๊ณ , ๋ชจ๋“ˆ์— ๋Œ€ํ•ด์„œ๋งŒ ์ ‘๊ทผ ์ œํ•œ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    • private : ์™ธ๋ถ€ ์–ด๋–ค ๊ณณ์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    • public : ์™ธ๋ถ€ ์–ด๋””์„œ๋“ ์ง€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • protected : ํด๋ž˜์Šค ์„ ์–ธ์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€, ์ƒ์†๋œ ํด๋ž˜์Šค์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • internal : ๊ฐ™์€ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


    property

    • ๊ฐ์ œ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ธ ์บก์Šํ™”๋Š” ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๋Š” ๊ฒƒ์„ ์บก์Šํ™”๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    • ์บก์Šํ™”๊ฐ€ ์ ์šฉ๋œ ๋ณ€์ˆ˜๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠน์ • ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด property ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ์„ setter, ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ getter๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    class Student(var id: Int, val name: String)
    
    // Java Decompile
    public final class Student {
       private int id;
       @NotNull
       private final String name;
    
       public final int getId() {
          return this.id;
       }
    
       public final void setId(int var1) {
          this.id = var1;
       }
    
       @NotNull
       public final String getName() {
          return this.name;
       }
    
       public Student(int id, @NotNull String name) {
          Intrinsics.checkParameterIsNotNull(name, "name");
          super();
          this.id = id;
          this.name = name;
       }
    }
    • kotlin์˜ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ž๋™์œผ๋กœ getter ๋ฉ”์†Œ๋“œ์™€ setter ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • getter์™€ setter ๋ฉ”์†Œ๋“œ๋ฅผ final๋กœ ์„ ์–ธํ•˜์—ฌ ๋ฉ”์†Œ๋“œ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋•Œ๋กœ๋Š” ๋ณ€๊ฒฝ ํ•„์š”์„ฑ์ด ์žˆ์„ ์‹œ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ kotlin์—์„œ get(), set() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    class Student(var id: Int, val name: String) {
        var school: String = "seoul"
            get() {
                println("get ํ˜ธ์ถœ")
                return field
            }
            set(value){
                println("set ํ˜ธ์ถœ")
                field = value
            }
    }
    public final class Student {
       @NotNull
       private String school;
       private int id;
       @NotNull
       private final String name;
    
       @NotNull
       public final String getSchool() {
          String var1 = "get ํ˜ธ์ถœ";
          boolean var2 = false;
          System.out.println(var1);
          return this.school;
       }
    
       public final void setSchool(@NotNull String value) {
          Intrinsics.checkParameterIsNotNull(value, "value");
          String var2 = "set ํ˜ธ์ถœ";
          boolean var3 = false;
          System.out.println(var2);
          this.school = value;
       }
    }
    • field๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜์–ด, get๊ณผ set์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ž๋ฐ”๋กœ ๋””์ปดํŒŒ์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์‹œ๋ฉด getter์™€ setter์— ๊ธฐ๋ณธ ๊ฐ’์ด ์•„๋‹Œ ์ปค์Šคํ…€ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•œ getter, setter๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜•

    'Android > Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Kotlin] Array ์‚ฌ์šฉ๋ฒ•  (0) 2021.08.12
    [Kotlin] Functional Programming  (0) 2021.08.11
    [Kotlin] Generic, Inner ํด๋ž˜์Šค  (0) 2021.07.07
    [Kotlin] Companion Object ๋ž€?  (0) 2021.07.05
    [Kotlin] ํด๋ž˜์Šค ์ƒ์„ฑ๊ณผ ์ƒ์†  (0) 2021.07.04
Designed by Tistory.