Java ин калимаи калидӣ  



Java

Мо Java -ро истифода мебарем ин калимаи калидӣ барои истинод ба мисоли ҷорӣ ё тағирёбанда дар усул ё созанда. Мо инчунин метавонем онро ҳамчун ишора тағйирёбанда. Дар ин дастур, мо мефаҳмем, ки чӣ тавр java истифода мешавад ин калимаи калидӣ дар заминаҳои гуногун.

Истифодаи Java ин калимаи калидӣ  

Мақсади асосии истифодаи java ин калимаи калидӣ фарқияти байни тағирёбандаи мисол ва тағирёбандаи маҳаллӣ мебошад. Дар зер истифодаи дигари гуногун мавҷуданд:

  • Барои муроҷиат ба тағирёбандаи кунунии мисоли синф
  • Усули синфи кунуниро ба таври мустақим даъват кунед
  • Барои даъват кардани конструктори ҷории класс
  • Дар занги усули ҳамчун далел гузаред
  • Дар занги созанда ҳамчун далел гузаред
  • Баргардонидани мисоли ҷории синф аз усули

Истифодаи Java ин калимаи асосӣ ҳамчун тағирёбандаи мисоли синф  

Аввалан, биёед бубинем, ки вақте ҳам тағирёбандаи мисол ва ҳам параметр як ном доранд, чӣ мешавад. Дар мисоли поён, мо тағирёбандаи мисол ва параметрҳо дорем, ки ҳамон ном доранд rollno ва ном. Ҳоло вақте ки он усули даъват мекунад setDetails тартибдиҳанда ошуфта мешавад, ки кадоме тағирёбанда ва кадом параметр аст. Азбаски мо барои тағирёбандаҳои мисол ягон арзишро сарнагун накардаем, ҳангоми даъват кардани усул тафсилоти нишон медиҳад ночиз or арзиш.

public class Student {
  
  public int rollno;
  public String name;
  
  public void setDetails(String name, int rollno) {
    name = name;
    rollno = rollno;
  }
  
  public void displayDetails() {
    System.out.println("Name: " + name);
    System.out.println("RollNo: " + rollno);
  }

  public static void main(String[] args) {
    Student s = new Student();
    s.setDetails("Rakesh", 111);
    s.displayDetails();
  }

}
Name: null
RollNo: 0

Ҳоло фарз кунем, ки мо java-ро истифода мебарем ин калимаи калидӣ барои мисол тағйирёбанда тавре ки дар мисоли зер. Ҳоло тартибдиҳанда мефаҳмад, ки this.name ва this.rollno ба тағирёбандаи мисол ишора мекунад, ки мо дар аввал эълом карда будем ва мувофиқи он қиматҳои параметри ном ва роллоро таъин мекунем. Дар дохили он, вақте ки он усули setDetails -ро даъват мекунад, java -ро иваз мекунад ин калимаи калидӣ бо номи объект s чунон ки дар зер.

ҳамчунин нигаред
LinkedBlockingDeque дар Java

Java ин калимаи калидӣпайвандак

Дар зер коди барои тасвири истифодаи java оварда шудааст ин калимаи калидӣ ҳамчун тағирёбандаи мисол.

public class Student {
  
  public int rollno;
  public String name;
  
  public void setDetails(String name, int rollno) {
    this.name = name;
    this.rollno = rollno;
  }
  
  public void displayDetails() {
    System.out.println("Name: " + name);
    System.out.println("RollNo: " + rollno);
  }

  public static void main(String[] args) {
    Student s = new Student();
    s.setDetails("Rakesh", 111);
    s.displayDetails();
  }

}
Name: Rakesh
RollNo: 111

Дар ҳолате, ки мо номҳои гуногунро барои мисоли тағирёбанда ва параметр истифода мебарем, пас ба мо Java лозим нест ин калимаи калидӣ. Вақте ки он изҳоротро иҷро мекунад, тартибдиҳанда java-ро дар дохили он илова мекунад ин калимаи калидӣ ба тағирёбанда ва сипас онро бо номи объекти ҷорӣ иваз мекунад. Дар зер намунае оварда шудааст, ки мо 2 объект дорем ва бо истифода аз номҳои гуногун, масалан тағирёбанда ва параметр.

Java ин калимаи калидӣпайвандак

Вақте ки он усули истифодаи объекти s1 -ро меномад, онро иваз мекунад this калимаи калидӣ бо номи объект ва аз ин рӯ мегардад s1.studentname ва s1.studentrollno. Ба ин монанд, вақте ки он усули истифодаи объекти s2 -ро даъват мекунад, онро дарунӣ иваз мекунад s2.studentname ва s2.studentrollno.

public class Student {
  
  public int studentrollno;
  public String studentname;
  
  public void setDetails(String name, int rollno) {
    studentname = name;
    studentrollno = rollno;
  }
  
  public void displayDetails() {
    System.out.println("Name: " + studentname);
    System.out.println("RollNo: " + studentrollno);
  }

  public static void main(String[] args) {
    Student s1 = new Student();
    Student s2 = new Student();
    s1.setDetails("Rakesh", 111);
    s1.displayDetails();
    s2.setDetails("Kiran", 100);
    s2.displayDetails();
  }

}

Name: Rakesh
RollNo: 111
Name: Kiran
RollNo: 100

Мо инчунин метавонем java -ро истифода барем ин калимаи калидӣ дар getter ва танзимкунанда усулҳои муқаррар ва баргардонидани тағирёбандаҳои мисол, ки асосан дар мерос истифода мешаванд. Дар зер намунаи getter ва setter оварда шудааст усулњои ки дар он мо java-ро истифода бурдаем ин калимаи калидӣ.

class Vehicle {
  private String name;
  
  public void setName(String name) {
    this.name = name;
  }
  
  public String getName() {
    return name;
  }
}

public class Car extends Vehicle{

  public static void main(String[] args) {
    Car c = new Car();
    c.setName("BMW");
    System.out.println("Vehicle name: " + c.getName());
  }

}

Vehicle name: BMW

Бо истифода аз Java ин калимаи калидӣ барои даъват кардани усул  

Мо метавонем java -ро истифода барем ин калимаи калидӣ барои даъват кардани усул дар синф. Гарчанде ки ин ҳатмӣ нест, ҳатто агар мо зикр ҳам накунем, тартибдиҳанда дар дохили худ усули истифодаи this калимаи калидӣ.

ҳамчунин нигаред
PriorityBlockingQueue дар Java

Java ин калимаи калидӣпайвандак

Дар мисоли зер, мо java -ро истифода кардем ин калимаи калидӣ барои даъват кардани усул displayAccount. Ҳатто агар мо онро истифода набарем ҳам, тартибдиҳанда дарун илова мекунад ин калимаи калидӣ ба он ҳангоми занг задан ба усули дар тасвири тасвирии дар боло овардашуда.

public class Account {

  public int accno;
  
  public void setAccountno(int accountnumber) {
    accno = accountnumber;
    this.displayAccountno(); //same as displayAccountno()
  }
  
  public void displayAccountno() {
    System.out.println("Account number: " + accno);
  }
  public static void main(String[] args) {
    Account a = new Account();
    a.setAccountno(123456);

  }

}
Account number: 123456

Бо истифода аз Java ин калимаи калидӣ барои даъват кардани созанда  

Мо метавонем истифода барем ин калимаи калидӣ барои занг задан ба ҳама бинокор дар дохили синф. Мо онро асосан барои занҷири созанда истифода мебарем, ки дар дохили созанда конструкторро даъват мекунад, ки дар истифодаи дубораи код кумак мекунад Дар асоси навъи конструктор, мо метавонем параметрҳоро гузаронем. Даъвати конструктор бо истифодаи java ин калимаи калидӣ бояд ҳамеша изҳороти аввал бошад, вагарна он хатои тартибро меорад.

Нуктаи муҳими дигари қайд кардан он аст, ки мо наметавонем истифода барем ин () ва супер () якҷоя. Ин ба мо имкон медиҳад, ки танҳо яке аз онҳоро дар конструктор истифода барем.

Усулҳои гуногуни даъват кардани конструкторҳо:

ин () - созандаи пешфарз

ин (параметр) - созандаи параметршуда

Дар зер намунаи даъват кардани конструктор бо параметр истифода мешавад ин калимаи калидӣ. Дар дохили конструктори якум мо конструктори дигарро бо як параметр даъват мекунем. Мо инчунин усули дигари конструкторро бо истифода аз ин калимаи калидӣ даъват мекунем.

public class Employee {

  public String empname;
  public int empno;
  public String role;
  
  Employee(String name, int empno){
    this("Manager");
    this.empname = name;
    this.empno = empno;
    this.showDetails(empname, empno, role);
  }
  
  Employee(String role) {
    this.role = role;
  }
  
  public void showDetails(String empname, int empno, String role) {
    System.out.println(empname + " " + empno + " " + role);
  }
  
  public static void main(String[] args) {
    Employee e = new Employee("Ravi",4235643);
  }

}
Ravi 4235643 Manager

Мо инчунин метавонем конструкторро бе ягон параметр истифода барем ин калимаи калидӣ дар мисоли зер.

public class Employee {

  public String empname;
  public int empno;

  
  Employee(String name, int empno){
    this();
    this.empname = name;
    this.empno = empno;
    this.showDetails(empname, empno);
  }
  
  Employee() {
    System.out.println("Calling constructor without parameter");
  }
  public void showDetails(String empname, int empno) {
    System.out.println(empname + " " + empno);
  }
  
  public static void main(String[] args) {
    Employee e = new Employee("Tejas",12345);
  }

}
Calling constructor without parameter
Tejas 12345

Фарз мекунем, ки мо кӯшиш мекунем, ки якчанд конструктори намудҳои гуногунро бо истифодаи java ин калимаи калидиро аз як конструктор даъват кунем, ин ба хатогии тартиб оварда мерасонад.

public class Employee {

  public String empname;
  public int empno;
  public String role;
  
  Employee(String name, int empno){
    this();
    this("Manager");
    this.empname = name;
    this.empno = empno;
    this.showDetails(empname, empno, role);
  }
  
  Employee(String role) {
    this.role = role;
  }
  
  Employee() {
    System.out.println("Calling constructor without parameter");
  }
  public void showDetails(String empname, int empno, String role) {
    System.out.println(empname + " " + empno + " " + role);
  }
  
  public static void main(String[] args) {
    Employee e = new Employee("Ravi",4235643);
  }

}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
  Constructor call must be the first statement in a constructor

  at Employee.<init>(Employee.java:9)
  at Employee.main(Employee.java:27)

Истифодаи Java ин калимаи калидӣ ҳамчун далел дар занги усул  

Мо метавонем java -ро истифода барем ин калимаи калидӣ ҳамчун далел ҳангоми даъват кардани усул. Ин асосан барои коркарди рӯйдодҳо истифода мешавад.

ҳамчунин нигаред
Синхронизатсияи ришта дар Java

Дар мисоли зер, мо истифода мебарем ин калимаи калидӣ ҳамчун параметр барои даъват кардани усули намоиш. Ба ҷои объекти ҷории синф, ки далели усули намоиш мебошад, мо истифода мебарем ин калимаи асосӣ ҳамчун далел. Ҳангоми иҷро, он дар дохили худ ин калимаи асосиро бо номи объект иваз мекунад.

public class ClassA {
  public void display(ClassA obj) {
    System.out.println("Display method");
  }
  public void show() {
    System.out.println("Show method");
    display(this);
  }
  
  public static void main(String[] args) {
    ClassA a = new ClassA();
    a.show();

  }

}
Show method
Display method

Истифодаи ин калимаи асосӣ ҳамчун далел дар даъвати созанда  

Мо метавонем истифода барем ин калимаи калидӣ ҳамчун далел дар даъвати созанда, вақте ки мо мехоҳем як объектро дар синфҳои гуногун истифода барем.

Масалан, дар коди зер, мо 2 дарс дорем ClassX ва ClassY. Дар доираи созандаи пешфарз ClassX, мо як намунаи объектро барои ClassY эҷод карда истодаем, ки дар он ҷо мегузарем ин калимаи асосӣ ҳамчун далел. Ин дар он аст, ки дар созандаи ClassY, мо объекти ClassX -ро ҳамчун параметр дорем. Пас, бо ин роҳ, мо метавонем объекти ClassX -ро дар ClassY дубора истифода барем. Бо истифода аз ин объект, мо метавонем ба арзиши х, ки дар ClassX ҷойгир аст, аз усули showData, ки дар ClassY ҷойгир аст, дастрасӣ пайдо кунем.

class ClassY {
  ClassX obj;
  ClassY(ClassX obj){
    this.obj = obj;
  }
  
  public void showData() {
    System.out.println("Value of x: " + obj.x);
  }
}
public class ClassX {
  int x = 20;
  
  ClassX(){
    ClassY objy = new ClassY(this);
    objy.showData();
  }

  public static void main(String[] args) {
    
    ClassX objx = new ClassX();
  }

}
Value of x: 20

Истифодаи ин калимаи калидӣ барои баргардонидани мисоли ҷории синф  

Мо инчунин метавонем java -ро истифода барем ин калимаи калидӣ барои баргардонидани як мисоли синфӣ. Ҳангоми истифода ин калимаи калидӣ барои чунин мақсад, мо бояд ҳамеша навъи синфро ҳамчун навъи бозгашти он усул истифода барем.

ҳамчунин нигаред
Java ба файл нависед - Чӣ тавр ба файл дар Java нависед - Java Файл эҷод кунед

Биёед инро бо мисоли зер фаҳмем. Дар усули getValue, мо намунаи синфро бо истифодаи java бармегардонем ин калимаи калидӣ. Аз ин рӯ навъи бозгашти усули аст TestDemo ки объекти синфро бармегардонад. Бо истифода аз ин объект мо метавонем displayValue метод

public class TestDemo {

  String value;
  
  TestDemo() {
    value = "Java tutorial";
  }
  
  public TestDemo getValue() {
    return this;
  }
  
  public void displayValue() {
    System.out.println("String value: " + value);
  }
  public static void main(String[] args) {
    TestDemo t = new TestDemo();
    t.getValue().displayValue();
  }

}
String value: Java tutorial

ишора