반응형

변수

Type    
val value  like const
var variable  
    var name: String = "tom"
    var age: Int = 18

    var nameVar = "tom"
    var age = 18

함수

fun sum(num1:Int, num2:Int) : Int {
	return num1+num2
}

fun sum1(num1:Int, num2:Int) : Int = num1 + num2

fun sum3(num1:Int, num2:Int) = num1 + num2

fun add10(num1:Int, num2:Int = 10) = num1 + num2

 

클래스

class Person{
    public var name: String = ""
    protected var age: String = ""
    private var phone: String = ""
    internal var address: String = ""
}

Constructor

Primary constructor(주 생성자)

class Person() {
    public var name: String = ""
    protected var age: String = ""
    private var phone: String = ""
    internal var address: String = ""
}


class Person() {
    public var name: String = ""
}

class Person(_name: String) {
    var name: String = _name
}

class Person(var name: String = "") {
}

Secondary constructor(부 생성자)

* 주 생성자 없음

class Person {
    var name: String = ""
    var age: Int  = 18
    
    constructor(_name: String){
        this.name = _name
    }
    
    constructor(_name: String, _age: Int){
        this.name = _name
        this.age = _age
    }
}

* 주 생성자 + 부 생성자 ( 부생성자는 반드시 주생성자를 재호출 해야 한다 --> 주생성자는 반드시 호출 되어야 한다.)

class Person(var _name: String) {
    var name: String = ""
    var age: Int  = 18

    constructor(_name: String, _age: Int) : this(_name){
        this.age = _age
    }
}

* 인자에 대한 디폴트 값을 전달받기 위해 부 생성자를 여러개 만들지 않아도, 디폴트 값을 활용하여 기능을 제공할 수 있다.

class Person(var _name: String, var age: Int = 18, var sex: String = "male" ) 

 

Initializer Block(초기화 블록)

* 초기화 블록은 주 생성자 호출 직후 실행되며, 부 생성자 보다 먼저 실행된다.

* 초기화 블록은 주 생성자가 없더라도, 부 생성자 보다 먼저 실행된다.

class Person{
    var _name: String = ""
    init {
        println("initial block")
    }
}

 

상속

반응형

+ Recent posts