ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 23.1.17 Kotlin Setter&Getter
    개발 이야기/TIL 2023. 1. 17. 17:41

    이어서 코틀린의 setter와 getter이다. 

    14일 글을 조금 더 자세히 적어보고자 한다(수정본..에 가깝다)

    Getter & Setter 기본형

    1. Kotlin에서는 JAVA와 다르게 primal constructor에 대해 Getter와 Setter을 컴파일 시 생성해준다. 

    public class Button {
       private int width;
       private int height;
       //constructor
       public Button(int width, int height){
       	this.width = width
        this.height = height
       }
       //getter
       public int getWidth(){
       	return width;
       }
       public int getHeight(){
       	return height;
       }
        public void setWidth(int value){
            if(value>50){
                width = value
            }
            else{
                width=50
            }
        }
        public void setHeight(int value){
            if(value>50){
                height = value
            }
            else{
                width=50
            }
        }
        
    }

    을 우리는 코틀린에서는..!

    //kotlin
    class Button(var width:Int, var height:Int) {
    }

    만 쓰면 끝이다. 

    이때 primal constructor를 선언하는 방법에 따라 조금씩 차이가 있다. 이는 아래와 같다. 

    primal constructor 선언방식 Getter 생성 여부 Setter 생성 여부
    class Button(width:Int) X X
    class Button(var width:Int) O O
    class Button(val width:Int) O X

    Getter&Setter 호출

    //kotlin
    class Button(var width:Int, var height:Int) {
    }
    
    //get
    var btn = Button(20,30)
    btn.width
    btn.height 
    
    //set 
    btn.width = 100

    property를 그냥 호출하고, 값을 대입하면 된다. 

    Kotlin Class를 JAVA에서 호출하기 

    코틀린으로 class를 정의하고 자바에서 호출할 때는 다음과 같이 호출하면 된다. 

    //kotlin
    class Button(var width:Int, var isHeight:Int) {
    }
    //JAVA
    public static void main(String[] args){
    
    	Button btn = new Person(20, 24);
    
    	person.getWidth();
    	person.isHeight();
    
    	person.setWidth(100);
    	person.setHeight(12);
    
    }

    반대로 JAVA class를 코틀린에서 호출할때는 코틀린에서 호출하던 대로 사용하면 된다. 

     

    -Getter와 Setter 커스텀하기 

    자동으로 만들어주기는 하지만, 내가 직접 만들고 싶으면 아래와 같이 작성하면 된다.

    이 때 feild를 사용한다. field란 무엇일까? 이는 Backing feld라 한다. 

    Backing filed란 프로퍼티의 값을 저장하기 위한 필드이다. 이를 만일 사용하지 않고 set을 하려고 한다면, 무한재귀에 빠지는 경우가 발생한다!

    따라서 아래와 같이 꼭 field 키워드를 사용하도록 하자.

    //kotlin
    class Button {
        var width: Int = 0
        get() = field
     // width 이후에 작성한 set이기에 set(value)에 해당하는 field는 width에 관한 값이 됨   
        set(value){
    		field = value
        }
        var height: Int = 0
        get() = field
     // height이후에 작성한 set이기에 set(value)에 해당하는 field는 height에 관한 값이 됨   
        set(value){
            if(value>50){
                field = value
            }
            else{
                field=50
            }
        }

     

Designed by Tistory.