kotlin基礎二類の概要
Kotlinベース
クラスと属性
JavaBeanから始めましょう.JavaでJavaBean
Javaでは、コンストラクタには通常、フィールドに値を割り当て、getterまたはsetterメソッドまたは両方があります.Kotlinでは
たった一言でいいです.簡潔ではないでしょうか.修飾子
属性
kotlinでは次のようになります.<1>コンストラクタを呼び出し、 を使用していません.<2>getterメソッドを呼び出し、その値にアクセスしたのは不思議ではないでしょうか.同じ論理コードなのに、ずいぶん簡潔になって、やっと一日中トントンのコードを書く必要がなくなった.同様に、プロパティが
<1>:属性isSquareのgetter宣言は、あなたがそうすることもできます.
これもいいです.
パッケージ宣言とimportパッケージ
kotlinでは、package宣言とimportパッケージとJavaには何の違いもありません(packageには実は少し違いがありますが、以下に説明します).KotlinとJavaは100%互換性があるので、kotlinでimport Javaのクラスライブラリで使用できます.
JavaとKotlinのコードファイル
Javaではクラス名が
クラスと属性
JavaBeanから始めましょう.JavaでJavaBean
Person class
がコードをどのように書くかを見てみましょう.public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Javaでは、コンストラクタには通常、フィールドに値を割り当て、getterまたはsetterメソッドまたは両方があります.Kotlinでは
class Person(val name: String)
たった一言でいいです.簡潔ではないでしょうか.修飾子
public
がどうして消えたのか不思議に思うかもしれませんが、間違いなく、これもKotlinの特性の一つで、Kotlinではデフォルトのアクセス権はpublic
なので、ここではpublic
を明示的に指定する必要はありません.Kotlinはgetterを生成したりsetterを生成したりするなど、多くのことをしました.どうしてそう言うのですか.Kotlinコードを見てみましょうclass Person(val name: String, var isMan: Boolean)
属性
name
はval
で宣言され、kotlinコンパイラは自動的にgetterメソッドを生成し、属性isMan
はvar
で宣言されるので、getterメソッドとsetterメソッドを同時に生成します.彼らの使い方はkotlinとJavaでも違います.public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static void main(String...args) {
Person person = new Person("crazypandas");
System.out.println(person.getName());
}
}
//result:
//crazypandas
kotlinでは次のようになります.
class Person(val name: String)
fun main(vararg args: String) {
val person = Person("crazypandas")//<1>
println(person.name) //<2>
}
//result:
//crazypandas
new
キーワードvar
であれば、直接値を割り当てることができます(実質的にkotlinコンパイラはsetterを自動的に呼び出すことができます).たとえば、isMan:person.isMan = true
のプロパティを持つpersonオブジェクトがあります.ではkotlinでgetterとsetterをカスタマイズできますか?もちろんいいですよ.次のコードを見てください:class Rectangle(val width: Int, val height: Int) {
val isSquare: Boolean
get() { //<1>
return width == height
}
}
fun main(vararg args: String) {
val rectangle = Rectangle(10, 10)
println(rectangle.isSquare)
}
//result
//true
<1>:属性isSquareのgetter宣言は、あなたがそうすることもできます.
class Rectangle(val width: Int, val height: Int) {
val isSquare: Boolean
get() = width == height
}
これもいいです.
パッケージ宣言とimportパッケージ
kotlinでは、package宣言とimportパッケージとJavaには何の違いもありません(packageには実は少し違いがありますが、以下に説明します).KotlinとJavaは100%互換性があるので、kotlinでimport Javaのクラスライブラリで使用できます.
JavaとKotlinのコードファイル
Javaではクラス名が
.Java
ファイルと同じでなければならないことはよく知られていますが、Kotlinではこの制限はありません.kotlinでは、同じファイルに複数のクラスを書くことができ、名前は任意であってもよい.kotlinではpackageはJavaに完全に等価ではなく、Javaではpackageとフォルダパスが一致し、kotlinではpackageがフォルダパスに等価ではない点に注意が必要です.