Static
Il fait partie de la classe statique et peut être attaché à des variables, des méthodes, des blocs et des classes imbriquées. (À propos de la variable et de la méthode)
Avec le mot-clé static **, vous pouvez accéder aux membres statiques à l'intérieur de la classe sans instance **. De plus, quel que soit le nombre d'instances que vous créez, toutes les instances partageront les mêmes valeurs et méthodes.
La méthode "statique" n'appartient pas à l'instance et ne peut donc pas accéder aux membres de l'instance. Les membres «statiques» ne sont accessibles qu'à partir de la méthode «statique».
Utilisez statique lorsque le fait que la classe soit créée ou non n'a pas d'importance. Par exemple, si vous avez une variable de nom et de nom d'école dans votre classe Student, Puisque le nom est unique, il s'agit d'une variable d'instance et le nom de l'école est une variable statique car il est indépendant sans l'élève. La méthode est la même et on a l'impression de conserver des méthodes statiques qui ne sont pas liées aux étudiants.
Ce qui est utile, c'est que ** la modification de la statique dans une classe modifie les valeurs statiques de tous les objets qui référencent la classe! ** **
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)")
}
}
** Point 1 ** Java Swift est à peu près le même, mais La seule différence est de savoir comment accéder aux variables statiques.
--Dans Swift, que vous soyez dans une classe ou non, vous pouvez accéder aux membres statiques
Commencez par Student.collegeName
et le nom de la classe
--En Java, vous n'avez pas besoin d'ajouter un nom de classe au début lorsque vous êtes dans une classe
** Point 2 ** En regardant ce qui précède, le nom de l'école des deux étudiants est "Université de Tokyo" même s'il n'est pas défini. Et les variables statiques ne sont même pas référencées par les classes, donc elles ne sont même pas utilisées dans les constructeurs!
Java
Prorammer.java
public class Programmer {
private static boolean isGood;
private int experienceYears;
public static void main(){
//Les variables statiques sont accessibles à partir de méthodes statiques
isGood = true;
//* De la méthode statique au non-Les variables statiques sont inaccessibles. Vous devez utiliser une référence
Programmer person1 = new Programmer();
person1.experienceYears = 10;
}
// non-Les variables statiques sont accessibles à partir de méthodes statiques
public void setExperienceYears(int years){
this.experienceYears = experienceYears;
}
// non-Des méthodes statiques aux non-les variables statiques sont accessibles
public void setIsGood(Boolean isGood){
isGood = isGood;
}
}
Swift
.swift
class Programmer{
static var isGood:Bool?
var experienceYears:Int?
static func execute(){
isGood = true
//méthode non statique-Les variables statiques sont inaccessibles. Nécessite une instance
let person1 = Programmer();
person1.experienceYears = 10;
}
//non-Accessible à partir de méthodes statiques
func setExperience(_ years:Int){
self.experienceYears = years
}
//non-Les variables statiques ne sont pas accessibles directement à partir de méthodes statiques. Nom de classe requis.
func setIsGood(_ isGood:Bool){
Programmer.isGood = isGood
}
}
Final
Chaque fonction lorsque Final est joint. Seule la signification de la variable change 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
//C'est acceptable
final public class Final extends Queen { }
//C'est NG=erreur de compilation
public class King extends Final { }
Swift
.swift
//OK
final class Final: Programmer { }
//NG =erreur de compilation
final class Student: Final { }
Final Variable
Java Puisqu'il devient Constant, la valeur ne peut pas être modifiée. C'est un let dans Swift.
Swift
.swift
//Vous pouvez modifier la valeur de la variable finale dans la classe OK.
class Final{
final var name = "Ayako Sayama"
init() { name = "Ayako Superman" }
}
//Erreur de compilation NG
class Student: Final{
override var name = "new name"
}
Final Method
Recommended Posts