Für Java-Entwickler werde ich über Kotlin-Klassen schreiben.
Schreiben Sie den Klassennamen nach dem Schlüsselwort class
.
Definieren wir die Hundeklasse.
class Dog {
}
Klassenvererbung und Schnittstellenimplementierung werden nach dem Doppelpunkt geschrieben. Lassen Sie uns die Klasse Dog und Animal erben.
class Dog: Animal() {
}
Lassen Sie uns außerdem die Walkable-Schnittstelle implementieren.
class Dog: Animal(), Walkable {
}
Kotlin-Klassen können Eigenschaften haben.
Dies ist ** eine Kombination aus Java-Feldern, Gettern und Setzern **.
Deklarieren wir eine String-Typ-Eigenschaft namens name in der Dog-Klasse.
Verwenden Sie das Schlüsselwort var
.
class Dog {
var name: String = "pochi"
}
val dog = Dog()
val aName = dog.name //Wirkt als Getter
dog.name = "taro" //Wirkt als Setter
Wenn Sie es schreibgeschützt machen möchten, verwenden Sie das Schlüsselwort val
.
class Dog {
val name: String = "pochi"
}
val dog = Dog()
val aName = dog.name //Wirkt als Getter
dog.name = "taro" //Kompilierungsfehler!
Das Schlüsselwort val
kann nicht neu zugewiesen werden, sodass sein Wert nicht innerhalb der Klasse geändert werden kann.
Verwenden Sie das Schlüsselwort private set
, um es innerhalb der Klasse änderbar zu machen.
class Dog {
var name: String = "pochi"
private set
fun updateName(newName: String) {
this.name = newName
}
}
val dog = Dog()
dog.updateName("taro")
An diesem Punkt sind diejenigen, die denken: "Nein, es ist dasselbe wie ein Feld in Java öffentlich zu machen, richtig?" Scharf. Kotlins Eigenschaften sind klar in Getter, Setter und Felder unterteilt. Weitere Informationen [hier](https://qiita.com/watanave/items/1386d450f11ddf7d6c09#property und Hintergrundfeld)
Schreiben Sie Kotlins Konstruktor an einer etwas ungewöhnlichen Position.
class Dog constructor(/*Hier ist der Konstruktor*/) {
}
Das Schlüsselwort "Konstruktor" kann weggelassen werden. Sie kann beim Hinzufügen einer Anmerkung nicht weggelassen werden. Der an dieser Position geschriebene Konstruktor heißt ** Primärkonstruktor **. Selbst wenn Sie einen Konstruktor sagen, können Sie Eigenschaften und eine Liste von Konstruktorargumenten beschreiben.
Wenn Sie dem Konstruktorargument das Schlüsselwort var
oder val
hinzufügen, wird es so wie es ist zu einer Eigenschaft.
class Dog(var name: String) {
}
↑ ist gleichbedeutend mit ↓.
class Dog(name: String) {
var name: String = name
}
Der primäre Konstruktor kann jetzt Konstruktorargumente und -eigenschaften deklarieren. Andere Prozesse, die ausgeführt werden müssen, wenn die Klasse initialisiert wird, können im Initialisierer beschrieben werden.
class Point(val x: Int, val y: Int)
class Size(val width: Int, val height: Int)
class Regtangle(val origin: Point, val size: Size) {
val area: Int
init {
this.area = this.size.width * this.size.height
}
}
val rectangle = Regtangle(30, 10, 10, 20)
println(rectangle.area)
Die Klasse "Regtangle" erhält den Ursprung und die Größe vom Auftragnehmer und berechnet die Fläche mit dem Initialisierer.
Da es einen primären Konstruktor gibt, gibt es auch einen sekundären Konstruktor.
Sie können mehrere sekundäre Konstruktoren definieren.
Der sekundäre Konstruktor muss den primären Konstruktor nach :
aufrufen.
class Point(val x: Int, val y: Int)
class Size(val width: Int, val height: Int)
class Regtangle(val origin: Point, val size: Size) {
constructor(x: Int, y: Int, width: Int, height: Int): this(Point(x, y), Size(width, height))
}
Der Klasse "Regtangle" wurde ein Konstruktor hinzugefügt, der den Ursprung und die Größe als separate Parameter empfängt.
Definieren Sie die Dog-Klasse in Java. Es gibt Felder mit den Namen Name und Alter, die Getter bzw. Setter definieren.
public class Dog {
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Wie wäre es, dies in Kotlin zu schreiben?
class Dog(var name: String, var age: Int)
Das ist alles was es braucht.