Static
Es ist Mitglied der statischen Klasse und kann an Variablen, Methoden, Blöcke und verschachtelte Klassen angehängt werden. (Über Variable und Methode)
Mit dem statischen Schlüsselwort ** können Sie ohne Instanz auf statische Mitglieder innerhalb der Klasse zugreifen **. Unabhängig davon, wie viele Instanzen Sie erstellen, haben alle Instanzen dieselben Werte und Methoden.
Die "statische" Methode gehört nicht zur Instanz und kann daher nicht auf die Mitglieder der Instanz zugreifen. Auf 'statische' Mitglieder kann nur mit der 'statischen' Methode zugegriffen werden.
Verwenden Sie static, wenn es keine Rolle spielt, ob die Klasse erstellt wird oder nicht. Wenn Sie beispielsweise einen Namen und eine Schulnamensvariable in Ihrer Schülerklasse haben, Da der Name eindeutig ist, handelt es sich um eine Instanzvariable, und der Schulname ist eine statische Variable, da er ohne den Schüler unabhängig ist. Die Methode ist dieselbe und es fühlt sich an, als würden statische Methoden beibehalten, die nicht mit den Schülern zusammenhängen.
Was nützlich ist, ist, dass ** das Ändern der Statik in einer Klasse die statischen Werte aller Objekte ändert, die auf die Klasse verweisen! ** **.
Java
Main.java
public static void main(String args[]){
Student s1 = new Student("Yagami");
Student s2 = new Student("Dekisugi");
s1.display();
s2.display();
System.out.println(Student.collegeName);
}
Student.java
public class Student {
String name;
static String collegeName ="Tokyo University";
Student(String newStudentName){
name = newStudentName;
}
void display (){
System.out.println(name+" "+collegeName);
}
}
Swift
Main.swift
let s1 = Student("Yagami")
let s2 = Student("Dekisugi")
s1.display()
s2.display()
print(Student.collegeName)
Student.swift
public class Student {
var name:String?
static var collegeName:String?
init(_ name:String) {
self.name = name
}
func display() {
print("\(name) \(Student.collegeName)")
}
}
** Punkt 1 ** Java Swift ist ungefähr gleich, aber Der einzige Unterschied besteht darin, wie auf statische Variablen zugegriffen wird.
In Swift können Sie unabhängig davon, ob Sie in einer Klasse sind oder nicht, auf statische Mitglieder zugreifen Beginnen Sie mit "Student.collegeName" und dem Klassennamen
In Java müssen Sie zu Beginn keinen Klassennamen hinzufügen, wenn Sie sich in einer Klasse befinden
** Punkt 2 ** In den obigen Ausführungen lautet der Schulname der beiden Schüler "Tokyo University", obwohl er nicht festgelegt ist. Und statische Variablen werden nicht einmal von Klassen referenziert, daher werden sie nicht einmal in Konstruktoren verwendet!
Java
Prorammer.java
public class Programmer {
private static boolean isGood;
private int experienceYears;
public static void main(){
//Auf statische Variablen kann mit statischen Methoden zugegriffen werden
isGood = true;
//* Von der statischen Methode zur nicht-Auf statische Variablen kann nicht zugegriffen werden. Sie müssen eine Referenz verwenden
Programmer person1 = new Programmer();
person1.experienceYears = 10;
}
// non-Auf statische Variablen kann mit statischen Methoden zugegriffen werden
public void setExperienceYears(int years){
this.experienceYears = experienceYears;
}
// non-Von statischen Methoden zu nicht-Auf statische Variablen kann zugegriffen werden
public void setIsGood(Boolean isGood){
isGood = isGood;
}
}
Swift
.swift
class Programmer{
static var isGood:Bool?
var experienceYears:Int?
static func execute(){
isGood = true
//nicht von statischer Methode-Auf statische Variablen kann nicht zugegriffen werden. Benötigt Instanz
let person1 = Programmer();
person1.experienceYears = 10;
}
//non-Kann über statische Methoden aufgerufen werden
func setExperience(_ years:Int){
self.experienceYears = years
}
//non-Auf statische Variablen kann nicht direkt mit statischen Methoden zugegriffen werden. Klassenname erforderlich.
func setIsGood(_ isGood:Bool){
Programmer.isGood = isGood
}
}
Final
Jede Funktion, wenn Final angehängt ist. Nur die Bedeutung der Variablen ändert sich Java
Final Class | Final Variable | Final Method |
---|---|---|
no child | constant | no override |
Swift
Final Class | Final Variable | Final Method |
---|---|---|
no child | no override in subclass | no override |
Final Class
Java
//Das ist in Ordnung
final public class Final extends Queen { }
//Das ist NG=Kompilierungsfehler
public class King extends Final { }
Swift
.swift
//OK
final class Final: Programmer { }
//NG =Kompilierungsfehler
final class Student: Final { }
Final Variable
Java Da es konstant wird, kann der Wert nicht geändert werden. Es ist ein Einlass in Swift.
Swift
.swift
//Sie können den Wert der endgültigen Variablen in der OK-Klasse ändern.
class Final{
final var name = "Ayako Sayama"
init() { name = "Ayako Superman" }
}
//NG Kompilierungsfehler
class Student: Final{
override var name = "new name"
}
Final Method
Recommended Posts