Java bu açar söz


JavaBaxılıb 77

Java istifadə edirik bu metod və ya konstruktordakı cari misala və ya dəyişənə müraciət etmək üçün açar söz. Buna a kimi də müraciət edə bilərik arayış dəyişən. Bu təlimatda javadan necə istifadə edəcəyimizi başa düşəcəyik bu müxtəlif kontekstlərdə açar söz.

Bu açar sözün Java istifadəsi

Javadan istifadənin əsas məqsədi bu açar söz, nümunə dəyişəni ilə yerli dəyişən arasında fərq qoymaqdır. Aşağıda digər fərqli istifadə qaydaları:

  • Mövcud sinif nümunəsi dəyişəninə müraciət etmək
  • Mövcud sinif metodunu dolayısı ilə çağırın
  • Cari sinif konstruktorunu çağırmaq
  • Metod çağırışında mübahisə olaraq keçin
  • Konstruktor çağırışında mübahisə olaraq keçin
  • Cari sinif nümunəsini metoddan qaytarın

Bu açar sözdən Java-dan sinif nümunəsi dəyişən kimi istifadə etmək

Əvvəlcə, həm nümunə dəyişəninin, həm də parametrin eyni adı olduqda nə baş verdiyini görək. Aşağıdakı nümunədə, eyni ada sahib olan instansiya dəyişənimiz və parametrlərimiz var rollno və ad. İndi metodu çağıranda Details set kompilyator hansının dəyişkən olduğu, hansının parametr olduğu barədə qarışıq olur. Metodu çağırarkən nümunə dəyişənləri üçün hər hansı bir dəyəri başlatmadığımızdan ekran detalları göstərir null or 0 dəyər.

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

İndi güman edək ki, javadan istifadə edirik bu nümunəyə istinad etmək üçün açar söz dəyişən aşağıdakı nümunədə olduğu kimi. İndi tərtibçi this.name və this.rollno-nun əvvəl elan etdiyimiz instansiya dəyişəninə istinad etdiyini başa düşəcək və buna görə ad və rollno parametr dəyərlərini təyin edir. Daxili olaraq setDetails metodunu çağırdıqda java əvəz edir bu obyekt adı ilə açar söz s aşağıdakı kimi.

Java bu açar sözPin

Aşağıda javanın istifadəsini göstərmək üçün kod verilmişdir bu bir nümunə dəyişən kimi açar söz.

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

Bu halda, misal dəyişən və parametr üçün fərqli adlar istifadə edirik, java istifadə etməyimizə ehtiyac yoxdur bu açar söz. Bəyanatı yerinə yetirdikdə, tərtibçi daxili olaraq java əlavə edir bu dəyişənə açar söz və sonra onu cari obyekt adı ilə əvəz edir. Aşağıda 2 obyekt olduğumuz və misal dəyişən və parametr üçün fərqli adlardan istifadə etdiyimiz bir nümunə verilmişdir.

Java bu açar sözPin

S1 obyektini istifadə edərək metodu çağırdıqda, əvəz edir this obyekt adı ilə açar söz və bu səbəbdən olur s1.studentname və s1.studentrollno. Eynilə, s2 obyektini istifadə edərək metodu çağırdıqda, daxili olaraq əvəz edir s2.studentname və 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

Javadan da istifadə edə bilərik bu açar söz və qurucu əsasən irsiyyətdə istifadə olunan nümunə dəyişənlərinin təyin edilməsi və qaytarılması üsulları. Aşağıda alıcı və təyin edən bir nümunədir metodika javadan istifadə etdiyimiz yerdə bu açar söz.

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

Metodu çağırmaq üçün bu açar sözdən Java istifadə edin

Javadan istifadə edə bilərik bu bir sinifdə metod çağırmaq üçün açar söz. Məcburi olmasa da, qeyd etməsək də, tərtibçi daxili olaraq metodu çağırır this açar söz.

Java bu açar sözPin

Aşağıdakı nümunədə java istifadə etdik bu metodu çağırmaq üçün açar söz DisplayAccount. İstifadə etməsək də, kompilyator daxili olaraq əlavə edir bu metodu yuxarıdakı şəkilli təqdimatda göründüyü kimi çağırarkən ona açar söz.

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

Bir konstruktoru axtarmaq üçün bu açar sözdən Java istifadə edin

Biz istifadə edə bilərsiniz bu hər hansı birinə zəng etmək üçün açar söz konstruktor sinif daxilində. Əsasən kodun təkrar istifadəsinə kömək edən bir konstruktor daxilində konstruktor çağıran konstruktor zənciri üçün istifadə edirik. Konstruktor tipinə əsasən parametrləri keçə bilərik. Javadan istifadə edərək konstruktor çağırmaq bu açar söz həmişə ilk ifadə olmalıdır, əks halda tərtib səhvini atacaqdır.

Diqqət çəkən bir başqa vacib məqam da istifadə edə bilməyimizdir bu ()super () birlikdə. Yalnız onlardan birini konstruktorda istifadə etməyimizə imkan verir.

Konstruktorlara zəng etməyin müxtəlif üsulları:

this () - default qurucu

bu (parametr) - parametrləşdirilmiş konstruktor

Aşağıda bir parametr istifadə edərək konstruktoru çağırma nümunəsi verilmişdir bu açar söz. Birinci konstruktorun içərisində tək parametrli başqa bir konstruktor deyirik. Bu açar sözdən istifadə edərək konstruktordan başqa bir üsul da çağırırıq.

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

Hər hansı bir parametr istifadə etmədən konstruktoru da zəng edə bilərik bu aşağıdakı nümunədəki kimi açar söz.

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

Fərqli növdən çox konstruktoru javadan istifadə edərək bu konstruktordan bu açar sözdən istifadə etməyə çalışdığımızı düşünsək, tərtib xətası ilə nəticələnəcəkdir.

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)

Metod çağırışında bu açar sözün arqument kimi istifadə edilməsi

Javadan istifadə edə bilərik bu metod çağırarkən arqument kimi açar söz. Bu, əsasən hadisə ilə işləmək üçün istifadə olunur.

Aşağıdakı nümunədə istifadə edirik bu ekran metodu çağırmaq üçün bir parametr kimi açar söz. Ekran metodunun arqumenti olan cari sinif obyektinin əvəzinə istifadə edirik bu arqument kimi açar söz. İcra zamanı daxili olaraq bu açar sözü obyekt adı ilə əvəz edir.

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

Bu açar sözün konstruktor çağırışında arqument kimi istifadə edilməsi

Biz istifadə edə bilərsiniz bu eyni obyektdən çox sinifdə istifadə etmək istədikdə konstruktor çağırışında arqument kimi açar söz.

Məsələn, aşağıdakı kodda 2 sinif var ClassX və ClassY. Varsayılan ClassX qurucusu içərisində keçdiyimiz yerdə ClassY üçün bir obyekt nümunəsi yaradırıq bu arqument kimi açar söz. Bunun səbəbi, ClassY konstruktorunda parametr olaraq bir ClassX obyektimiz olmasıdır. Beləliklə, bu şəkildə ClassX obyektini ClassY-də yenidən istifadə edə bilərik. Bu obyektdən istifadə edərək ClassY-də olan x qiymətinə ClassY-də olan showData metodundan daxil ola bilərik.

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

Mövcud sinif nümunəsini qaytarmaq üçün bu açar sözdən istifadə etmək

Javadan da istifadə edə bilərik bu bir sinif nümunəsini qaytarmaq üçün açar söz. İstifadə edərkən bu belə bir məqsəd üçün açar söz, hər zaman sinif tipini həmin metod üçün bir qayıt növü kimi istifadə etməliyik.

Aşağıdakı bir nümunə ilə bunu başa düşək. Metodda getValue, java istifadə edərək sinif nümunəsini qaytarırıq bu açar söz. Beləliklə metodun qayıtma növüdür TestDemo sinif obyektini qaytaracaq. Bu obyektdən istifadə edərək displayValue metodu.

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

arayış

Şərh yaz

Translate »
1