関数、変数、クラス、属性

2786 ワード

n.関数

fun max(a:Int, b:Int) : Int{
	return if(a>b) a else b
}

fun main(args: Array<String>) {
	println(max(1,2))
}
上にif~else文をcottinとして使用します.
これをjavaの3つの演算子として表します.以下のとおりです.
public int max(int a, int b){
	return a>b ? a : b
}
expressionは値を返す形式であり、statementは値を作成しません.
Javaでは、これらの制御文はすべてstatementですが、kotlinでは重複文を除いてexpressionです.
//if문의 expression
fun max(a:Int, b:Int) : Int = if(a>b) a else b

//type inference를 이용하여 간소화
fun max(a:Int, b:Int) = if(a>b) a else b
コンパイラがタイプ推定を行う場合はreturn typeを省略できます.
ただし、式形式の関数でのみ実行できます.

コトリン変数


コトリンでは、変数はval、varで始まる必要があります.
このキーワードは、変数が可変タイプか可変タイプかを示す変数の開始を示します.
したがって、valとして指定された不変型変数はその後値を変更できず、変更時にcompileエラーが発生します.
Javaのfinalはvalに似ていると考えられます.
//immutable
val a = "b"

//mutable
var c = "case"

//초기화
val garde : Int
grade = 1
変数はタイプ推定も可能です.
初期化時に値を指定しない場合?タイプを明記する必要があります.
これは後で別途丁寧に処理しなければなりません.

Class & Property


cottinでは、関数または変数が明示的に限定子を表さない場合、それらは共通である.

Property


Javaではpropertyはメンバー変数とそのメンバー変数のgetterとsetterを表します.
コトリンでは、分離されたpropertyを簡単に表すことができる要素です.
すなわち、メンバー変数を宣言すると、コンパイラは対応するgetterとsetterを自動的に生成します.
(コトリンの特徴から見た)
fun Person(
	val name : String //immutable임으로 컴파일러가 getter만 생성한다.
    var isMarried : Boolean //mutable임으로 컴파일러가 getter/setter 모두 생성한다.
)

fun main(args : Array<String>){
	val person = Person("Bob", true)
    println(person.name)	//실제로 getter
    println(person.isMarried) //실제로 getter	가 불린다.

}
JavaではpersongetName()を使用して値またはsetdを取得する必要があります.
コトリンでは、コンパイラが自動的に生成され、呼び出されます.
ただし、「isXXXX」というメンバー変数については、setterにのみsetを付け、getterには「isXXX」と書きます.
ex. person.isMarried()/person.setMarried(true)

Custom Property


getter/setter固有のインプリメンテーションセクションに挿入したい場合があります.
この場合、get()、set()メソッドを直接実装し、それを入れることができる.
その場合、以下のようになります.
class Rectangle(val height: Int, val width: Int){
	val isSquare : Boolean
    	get() {
        	return height == width
        }
}

fun main(args : Array<String>){
	val rectangle = Rectangle(41,43)
    println(rectangle.isSquare)
}