본문 바로가기

Android 공부/Java와 다른 Kotlin

[JAVA 다른 KOTLIN ] function 기초, 프로퍼티의 getter setter


0. 이전글


2018/12/13 - [Java와 다른 Kotlin] - [JAVA 다른 KOTLIN ] if-else, switch, when


1. a+b 기본


1-1. JAVA CODE:


1
2
3
4
5
6
7
8
9
10
11
12
13
public class StudyClassJava extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_empty);
        aPlusB(15,10);
    }
 
 
    private int aPlusB(int a, int b) {
        return a + b;
    }
}
cs


1-2. KOTLIN CODE:


1
2
3
4
5
6
7
8
9
class   StudyClassKotlin : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_empty)
        Log.d("a+b", aPlusB(10,15).toString())
    }
 
    fun aPlusB(a:Int, b:Int) = a+b
}
cs


1-3. 해석:


코틀린에서는 aPlusB(a:Int, b:Int) = a+b와 같이 쉽게 함수를 표현식으로 나타낼 수 있다는 것을 알 수 있다.


2. a+b default parameters 활용


2-1. JAVA CODE:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class StudyClassJava extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_empty);
        defaultAplusB(15,10);
        defaultAplusB(15);
    }
 
    private int defaultAplusB(Integer... nums) {
        int defaultNum = 10;
        int result = 0;
        if (nums.length == 2) {
            result = nums[0+ nums[1];
        } else if (nums.length == 1) {
            result = nums[0+ defaultNum;
        }
        return result;
    }
}

cs


2-2. KOTLIN CODE(varage):


1
2
3
4
5
6
7
8
9
10
class StudyClassKotlin : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_empty)
        Log.d("a+b",defaultAplusB(0).toString())
    }
 
    fun defaultAplusB(vararg nums:Int) = if(nums.size==2){nums[0]+nums[1]}else{nums[0]+10}
}
 
cs

2-3. KOTLIN CODE(default parameter):


1
2
3
4
5
6
7
8
9
10
class   StudyClassKotlin : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_empty)
        Log.d("a+b", aPlusB(10,15).toString())
        Log.d("a+b",defaultAplusB(b=15).toString())
    }
 
    fun defaultAplusB(a:Int=10, b:Int) = a+b
}
cs

2-4. 해석 :


varage를 통해서 간단하게 여러개의 변수를 처리할 수 있고,

default parameter라는 개념이 있어서 함수의 변수의 default 값을 설정해 놓을 수 있다. 


3. 프로퍼티


프로퍼티는 클래스의 변수라고 한다.

JAVA와 KOTLIN의 차이 또한 명백하게 나타나는 부분이라고 생각한다.


3-1. JAVA CODE:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class StudyClassJava extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_empty);
        User user = new User();
        user.name = "moon";
        Log.d("user", user.name);
    }
 
    class User
    {
        String name;
 
        public String getName() {
            return name;
        }
 
        public void setName(String name) {
            this.name = name;
        }
    }
}
cs

3-2. KOTLIN CODE(기본):


1
2
3
4
5
6
7
8
9
10
11
12
class StudyClassKotlin : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_empty)
        val user = User()
        user.name = "moon"
        Log.d("name",user.name)
    }
 
    class User(var name:String)
    
}
cs

코틀린에서는 User 클래스를 선언과 동시에 var, val 변수를 통해서 외부에서 참조할 수 있도록 프로퍼티로 만들 수 있다.

만약에 var, val을 붙이지 않는다면 클래스를 생성함과 동시에 클래스 내부에서만 사용할 수 있는 참조변수가 된다.


3-3. KOTLIN CODE(field를 통한 getter/setter):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class StudyClassKotlin : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_empty)
        val user = User()
        user.name = "moon"
        Log.d("name",user.name)
    }
 
    class User{
        var name:String= null
            get() = field
            set(inName) {
                field = inName
            }
    }
}
cs

코틀린에서는 field라는 변수를 통해서 get과 set에서 return 되는 변수값을 제어할 수 있다.




개인적으로 만들고 있는 어플리케이션입니다.


2018/10/21 - [나의 일기] - (리뷰) 시간표 어플리케이션 - 담다

2018/07/15 - [나의 일기] - #담아두다 #일상 #다이어리 #어플리케이션



'Android 공부 > Java와 다른 Kotlin' 카테고리의 다른 글

[JAVA 다른 KOTLIN ] if-else, switch, when  (0) 2018.12.13