kotlin의 클래스 - 객체지향

728x90

객체지향, 즉 데이터를 객체로 취급하여 프로그램에 반영한 것으로 객체들의 상호작용을 통해 프로그램이 동작하는 것을 말한다.

 

객체지향의 코드의 재사용, 변경의 특징을 이용해서 다음과 같은 클래스를 만들 수 있다.

 

class Food(
//  콤마를 사용해 변수를 초기화하고
    var name: String,
    var calories: Int
){
//  다음 중괄호안에 클래스 함수를 써주고 변수명을 참조할 때는 $를 쓴다 = jQuery랑 비슷함
    fun brief(){
        println("Name : $name  Calories : $calories" )
    }
}
fun main(){
    var a = Food("Chicken", 1500)
    var b = Food("Pizza", 1000)
//  만든 함수를 호출할 때는 .뒤에 함수명을 써준다.
    a.brief()
    b.brief()
}

Name : Chicken  Calories : 1500
Name : Pizza  Calories : 1000

 

다른 객체지향 언어와 동일하게 생성자를 만들어서 객체를 초기화 시킬 수 있다. 

또한 kotlin에서는 보조생성자라는 기능이 추가되었는데, 기본의 생성자를 오버라이딩하여 필요한 매개변수만 변경한 후 사용한다.

생성자는 init함수를 통해 초기화하고 보조생성자는 constructor함수를 통해 초기화한다.

아래 예시를 보면서 이해하는 편이 좋다.

class Food(
//  콤마를 사용해 변수를 초기화하고
    var name: String,
    var calories: Int
){
//  생성자를 통한 초기화
    init {
        println("${this.name} contains ${this.calories} calories")
    }
//  보조생성자를 통한 부분 초기화
//  기본으로 사용할 매개변수를 첫 ()에 넣어주고 : 을 통해 고정으로 사용할 매개변수의 값을 할당한다.
    constructor(name:String) : this(name, 500){
        println("calories in $name exceed more than $calories")
    }
}
fun main(){
    var a = Food("Chicken", 1500)
    var b = Food("Pizza", 1000)
    var c = Food("Noodle")
}

Chicken contains 1500 calories
Pizza contains 1000 calories
Noodle contains 500 calories
// 아래에 보조 생성자까지 초기화된것을 볼 수 있다.
calories in Noodle exceed more than 500

 

728x90