A quoi sert Java ceci ?
Le rôle de ce mot-clé en java
1 cela appelle l'attribut current : son rôle principal est lorsque les données de la classe doivent être initialisées. . Vous pouvez attribuer des valeurs via cela au lieu de simplement définir une variable à affecter, ce qui est plus propice à la lecture et à la compréhension du code
Par exemple :
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(String name,int price){ //使用this对类的数据进行初始化 this.name = name; this.price = price; } /*public Book(String n,int p){ //若不使用this关键字只能这样进行赋值,不利于将变量与属性统一起来 name = n; price = p; }*/ public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
2. . cet appel Méthodes (méthodes ordinaires, méthodes constructeur)
(1) Méthodes ordinaires :
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(String name,int price){//使用this对类的数据进行初始化 this.name = name; 6 this.price = price; this.print();//调用本类普通方法,虽然可以不用使用this也可以进行本类普通方法的调用,但是好的习惯最好应该加上,目的是可以区分方法的定义来源 } public String getInfo(){ return "书籍:" + name + ",价格:" + price; } public void print(){ System.out.printIn("***********"); } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
(2) Méthodes constructeur : La différence entre les méthodes ordinaires et les méthodes constructeur est que les méthodes constructeur ne peuvent que être utilisée après leur création une fois, utilisée pour initialiser les données, tandis que les méthodes ordinaires peuvent être appelées plusieurs fois après la création.
Lorsque vous devez utiliser la méthode constructeur pour générer le même contenu répété, si vous n'utilisez pas ce mot-clé, vous ne pouvez utiliser que le code suivant :
Copier le code
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(){//无参构造 System.out.printIn("*************"); } public Book(String name){//一参构造 System.out.printIn("*************"); this.name = name; } public Book(String name,int price){//二参构造 System.out.printIn("*************"); this.name = name; this.price = price; } public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
Évidemment, cela gaspille beaucoup de lignes de code. Au lieu de cela, cela devrait être utilisé pour appeler le constructeur. La méthode est la suivante :
class Book{//定义书的类 private String name;//书本名字 private int price;//书本价格 public Book(){//无参构造 System.out.printIn("*************"); } public Book(String name){//一参构造 this();//调用本类中的无参构造 this.name = name; } public Book(String name,int price){//二参构造 this(name);//调用本类中的一参构造 this.price = price; } public String getInfo(){ return "书籍:" + name + ",价格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
Remarque : l'appel à this doit être la première instruction du constructeur. , sinon une erreur se produira. Bien sûr, il ne peut pas appeler le constructeur dans une méthode normale.
La chose la plus importante est que l'appel de ceci ne peut pas former de boucle, c'est-à-dire qu'il ne peut pas former un appel récursif sans sortie.
3. ceci représente la méthode actuelle
class Book{ public void fun(){ System.out.printIn("FUN方法"+this); } } } public class ThisDemo{ public static void main(String args[]){ Book b1 = new Book(); System.out.printIn("MAIN方法"+b1); b1.fun();//有b1调用fun方法(this = b1) //两个输出结果的地址一样,代表着此时this代表着b1 System.out.printIn("*************") Book b2 = new Book(); System.out.printIn("MAIN方法"+b2); b2.fun();//此时输出结果和b2一样 } }
Tout au long du processus, la définition de this n'a pas changé tant qu'un certain objet appelle une méthode dans cette classe. , à ce moment, cela représente l'objet en cours d'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!