Java-da OOP konsepsiya


JavaBaxılıb 72

Java əsas götürülmüş bir proqramlaşdırma dilidir OOP anlayışlar (Obyekt yönümlü proqramlaşdırma sistemi). Başqa sözlə, istifadə edir obyektləri məlumatları və davranışlarını təyin etmək. Bu, kodu daha çevik edir və oxunuşu artırır və kodu daha asan başa düşməyə kömək edir. Bu təlimatda Java-da OOPs anlayışlarını başa düşəcəyik.

Java-da OOP-lərin xüsusiyyətləri

Java-da OOP konsepsiyaPin

Java-da OOPs Konsepsiyalarının üstünlükləri

  • Kod artığını azaldır
  • Kod oxunuşunu yaxşılaşdırır
  • Aşağı inkişaf dəyəri
  • Proqram keyfiyyəti yaxşılaşmışdır
  • Daha sürətli məhsul hazırlanması
  • Kodun təkrar istifadəsi

Java-da OOP-lərin Problemləri

  • Yüksək öyrənmə əyrisi
  • Böyük proqram ölçüsü
  • Yavaş icra

Obyekt

Java-da Nesne yönümlü proqramlaşdırmanın vacib xüsusiyyətlərindən biri də obyekt. Bir obyekt, bir sinif nümunəsi olan real həyat varlığını təmsil edir. Hər ikisini də ehtiva edir məlumatmetodika(davranışlar). Cisimlər əsasən 2 xüsusiyyətə malikdir ididavranışlar. Vəziyyət obyektin (məlumatların) şəxsiyyətindən başqa bir şey deyil və davranış obyektin funksiyasını (metodunu) təsvir edir.

misal:

Obyekt: Mobil

dövlət: Ad, Model No, Rəng

Davranış: Zəng etmək, mesajlaşmaq, açmaq, söndürmək, foto çəkmək və s.

Bunu bir nümunə ilə başa düşək. Burada sinif adı Mobildir və mobilename, modelNumber və color kimi xüsusiyyətlərə və ya vəziyyətlərə malikdir. Java proqramlaşdırmada bu atributları belə adlandırırıq dəyişənlər və kimi davranışlar üsulları.

Metodlar call (), message (), switchOn () və switchOff ().

Obyekt adı Mobil sinifinin bir nümunəsidir. Bu obyekt istifadə olunur m, atributlara və metodlara daxil ola bilərik.

public class Mobile {

  //Attributes
  String mobilename;
  String modelNumber;
  String color;
  
  //Methods
  public void call() {
    
  }
  
  public void message() {
    
  }
  public void switchOn() {
    
  }
  public void switchOff() {
    
  }
  
  public static void main(String[] args) {
    Mobile m = new Mobile();

  }

}

Sinif

Bir sinif birdən çox obyekt yarada biləcəyimiz bir prototip və ya plan kimi təyin edilə bilər. Başqa sözlə, bir qrup varlıqdan başqa bir şey deyil. Yazdığımız hər hansı bir java proqramı java-da obyekt yönümlü proqramlaşdırmanın başqa bir xüsusiyyəti olan bir sinif kimi yazılmalıdır.

Misal:

Sinif: şəxs

Obyekt: Kişi və ya qadın

Dövlət: Ad, Yaş

Davranış: yemək, gəzinti, yemək bişirmək və s

Aşağıda birdən çox obyektlə bir sinif yaratma nümunəsi və məlumatlara və dəyişənlərə necə daxil olmaq olar. Burada adlı bir sinif yaratdıq Şəxs 2 obyekt ilə kişiqadın. Bu 2 obyektlə obyektlərin əsas istifadəsi olan sinifin bütün xüsusiyyətlərinə və metodlarına daxil ola bilərik. Artıqlığı azaldır və kodun oxunaqlılığını artırır. Həm də obyekt yaradıldıqda çağırılan sinif üçün bir konstruktor yaratdıq. İnşaatçılar haqqında daha çox məlumat əldə etmək üçün müraciət edin javada konstruktorlar tutorial.

public class Person {
  
  //Attributes
  String name;
  int age;
  
  Person(String name, int age){
    this.name = name;
    this.age = age;
  }
  
  public void eating() {
  System.out.println("Eating");	
  }
  public void walking() {
    System.out.println("Walking");
  }

  public static void main(String[] args) {
    Person male = new Person("Dev",35);
    Person female = new Person("Devika",20);
    
    System.out.println(male.name + " " + male.age);
    male.eating();
    System.out.println(female.name + " " + female.age);
    female.walking();
    

  }

}
Dev 35
Eating
Devika 20
Walking

OOPs anlayışları - Abstraksiya

Abstraksiya Java-da əsas OOP konsepsiyalarından biridir. Əsasən hansı məlumatların görünməli və nəyin gizlədilməsi lazım olduğunu müəyyənləşdirir. Başqa sözlə, daxili funksionallığı deyil, yalnız metodları təmin edir. Məsələn, bir mobil telefondan istifadə edərkən sadəcə davranışını bilirik, ancaq necə işləməsinin daxili mexanizmini bilmirik. Tətbiqi daha etibarlı etmək üçün soyutlamadan istifadə edə bilərik. Məsələn, net bankçılığa daxil olub istifadəçi adı və şifrə təqdim etdiyimiz zaman parol gizlidir.

Bir sinif, məlumat və ya metod üçün java-da obyekt yönümlü proqramlaşdırmanın bu xüsusiyyətindən istifadə edə bilərik. Abstraktı həyata keçirmək üçün istifadə edirik interfeyslərmücərrəd dərslər. Java-da bu OOPs konsepsiyasını aşağıda ətraflı şəkildə başa düşək.

Abstrakt sinif

Bir mücərrəd sinif və ya metod yaratmaq üçün istifadə edirik mücərrəd açar söz.

Əgər mücərrəd bir sinif yaratsaq, deməli bu sinif üçün bir obyekt yarada bilmərik. Ayrıca, mücərrəd bir sinif mücərrəd bir üsula və normal metodlara da sahib ola bilər. Bir sinifdə mücərrəd bir metod varsa, sinfi mücərrəd elan etməliyik.

Abstrakt sinif yalnız bir metod elanını ehtiva edir və heç bir tətbiq yoxdur. Bunun üçün istifadə etməliyik miras və mücərrəd sinfi genişləndirərək mücərrəd metod funksiyasını həyata keçirmək. Mütləq sinifin bütün mücərrəd metodlarını tətbiq etmək məcburidir, əks halda tərtib səhvini atacaq.

Abstrakt sinif və metod nümunəsi

Budur mücərrəd bir sinif yaratdıq Hesabatı musiqi çünki 2 mücərrəd metod və 1 normal metod var. Mücərrəd metodlar Marks əldə edin və işarələri təyin edin funksiyası daxilində heç bir kod içermədiyi anlamına gələn yalnız bəyanatlara və tətbiq edilməməsinə sahibdir. Bizim də mücərrəd olmayan bir metodumuz var getName içindəki funksionallıqla.

/ * Fayl adı: Scores.java * /

//Abstract class
public abstract class Scores {
  String name;
  abstract int getMarks(); //abstract method
  abstract void setMarks(int marks);//abstract method
  
  //non abstract method
  public String getName() {
    return name;
  }
}

Sonra başqa bir sinif yaradırıq  Kollec. Sifarişlə mücərrəd sinifin mücərrəd metodlarını həyata keçirmək Xallar, açar sözdən istifadə edərək mücərrəd sinfi genişləndirməliyik uzanır. Bu sinifdə mücərrəd metodların bütün tətbiqlərini təmin edirik. Sonra bir obyekt yaradırıq sinif üçün Kollec və bu metodlara və məlumatlara daxil olmaq.

/ * Fayl adı: College.java * /

public class College extends Scores {

  public int marks;
  public int getMarks() {
    return marks;
  }
  
  public void setMarks(int marks) {
    this.marks = marks;
  }
  public static void main(String[] args) {
    College c = new College();
    c.name = "Harish";
    c.setMarks(80);
    System.out.println("Student Name: " + c.name);
    System.out.println("Student Marks: " + c.getMarks());

  }

}
Student Name: Harish
Student Marks: 80

Mücərrədləşdirmənin əsas fikri ondan ibarətdir ki, funksionallıq eyni olsa da, həyata keçirilmə yolu hər sinif üçün fərqli ola bilər. Bu daha çox rahatlıq təmin edir.

Məsələn, aşağıda başqa bir sinif var məktəb eyni abstrakt sinfi genişləndirir Hesabatı musiqi. Ancaq fərq etsəniz, mücərrəd metodların tətbiqinin burada fərqli olduğunu görə bilərik. Metodun tətbiqini dəyişdirmək üçün elastikliyimiz var. Bu nümunədə əlavə etdik 5 işarələrə Marks əldə edin üsul və əlavə edildi 2 qədər işarələri təyin edin metodu.

/ * Fayl adı: School.java * /

public class School extends Scores{

  int marks;
  public int getMarks() {
    return marks+5;
    
  }
  public void setMarks(int marks) {
    this.marks = marks+2;
  }
  public static void main(String[] args) {
    School s = new School();
    s.name = "Harsha";
    s.setMarks(80);
    System.out.println("Student Name: " + s.name);
    System.out.println("Student Marks: " + s.getMarks());

  }

}
Student Name: Harsha
Student Marks: 87

Interface

İnterfeys eyni zamanda bir sinfə bənzəyir, lakin bir qrup mücərrəd metodlardan ibarətdir. Metod tətbiqini ehtiva etmir, yalnız metod tərifinə malikdir. Bu mücərrəd metodların funksionallığını həyata keçirmək üçün mirasdan istifadə etməliyik. Abstrakt sinif və interfeys arasındakı bir fərq, interfeysin mücərrəd olmayan metodlara sahib ola bilməməsidir. The interface nail olmağın başqa bir yoludur mücərrədlik bu da Java-da vacib bir OOPs konsepsiyasıdır

İnterfeys nümunəsi

Bu nümunədə bir interfeys yaratdıq Şekiller bir metodu olan hesabla ərazi. İnterfeysdə yalnız metod bəyannaməsini təqdim edirik və tətbiq yoxdur. Bu metodu tətbiq etmək üçün başqa bir sinif təyin etməliyik.

public interface Shapes {
  public void calculateArea();
}

Budur bir sinifimiz var Düzbucaq həyata keçirir Şekiller sinif. Bunun üçün tətbiq edir açar söz. Bu sinif metodun funksionallığını təmin edir hesabla ərazi. Java-da bu OOPs konsepsiyasının əsas fikri, hər hansı bir sinif üçün funksionallığı fərqli bir şəkildə həyata keçirmək üçün rahatlıq təmin etməkdir.

public class Rectangle implements Shapes {

  public void calculateArea() {
    int l = 4;
    int b = 5;
    int area = l*b;
    System.out.println("Area: " + area);
  }
  public static void main(String[] args) {
    Rectangle r = new Rectangle();
    r.calculateArea();

  }

}

Area: 20

Ayrıca başqa bir sinif yarada bilərik kvadrat və həyata keçir Şekiller sinif. Bu sinif hesabla ərazi Aşağıdakı kimi başqa bir şəkildə üsul. Buradan metod hesabla ərazi interfeysi həyata keçirən hər bir sinif spesifikasiyasına əsasən həyata keçirilə bilər.

public class Square implements Shapes {

  public void calculateArea() {
    int l = 4;
    int area = l*l;;
    System.out.println("Area: " + area);
  }
  public static void main(String[] args) {
    Square s = new Square();
    s.calculateArea();
  }

}
Area: 16

OOPs anlayışları - Kapsul

Kapsülləşdirmə məlumatları və metodlarını xarici müdaxilədən bağlayan Java-da başqa bir OOPs konsepsiyasıdır. Bu, digər siniflərin bu məlumatları və ya metodları birbaşa əldə etməyə və ya yeniləməsinə icazə vermədiyi deməkdir. Yaxşı bir nümunə, ciddi şəkildə Java sinfinin özüdür bağlayır məlumat və sinif daxilindəki funksiyaları. Buna nail olmaq üçün dəyişənləri və ya verilənləri elan edirik xüsusi dəyişənlər. Xüsusi dəyişən nəyin olduğunu daha çox təlimlərdə ətraflı müzakirə edəcəyik giriş dəyişdiriciləri. Hələlik yalnız xüsusi dəyişənlərə bir sinif xaricində daxil olmaq mümkün olmadığını unutmayın. Bu məlumatlara daxil olmaq və yeniləmək üçün istifadə etməliyik ictimai almaq və qurmaq metodlar. Bu xüsusi dəyişənlərə birbaşa digər siniflərdən daxil ola bilmirik. Beləliklə, kapsülləmə istifadəçidən həssas məlumatları gizlətməyə kömək edir. Buna da deyilir məlumatların gizlənməsi.

Enkapsulyasiyanın ən yaxşı nümunələrindən biri kapsul özü (adından da göründüyü kimi) içimizdə bizə görünməyən bir dərman var.

misal

Bir nümunə istifadə edərək bu OOPs Encapsulation anlayışını başa düşək. İlə Student.java sinifini yaratdıq xüsusi dəyişənlər adyaş. Digər siniflərdən dəyişənlərə daxil olmaq üçün getName, setName, getAge və setAge metodlarından istifadə etməliyik. Bunlara deyilir qazanlar və qurucular javada obyekt yönümlü proqramlaşdırmada.

/ * Faylın Adı: Student.java * /

public class Student {

  private String name;
  private int age;
  
  public String getName() {
    return name;
  }
  public void setName(String studentname) {
    this.name = studentname;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int studentage) {
    this.age = studentage;
  }
}

/ * Faylın Adı: Department.java * /

Başqa bir sinif yaratdıq şöbə və buradan özəl dəyişənlərə daxil olmağa çalışırıq tələbə sinif. Buna görə bunun üçün getters və setters metodundan istifadə edə bilərik. Bu səbəbdən bu sinif getter və setter metodlarının daxili tətbiqini bilmir. Yalnız getName tələbə adını və setName tələbə adını təyin etməyə kömək edəcəyini bilir. Ümumiyyətlə hər hansı bir tətbiqi inkişaf etdirmək üçün istifadə olunan bu OOPs konsepsiyasının Java-dakı əsas fikri budur.

public class Department {
  public static void main(String[] args) {
    Student s = new Student();
    s.setName("Arthi");
    s.setAge(32);
    System.out.println("Student Name: " + s.getName());
    System.out.println("Student Age: " + s.getAge());
  }
  
}

Student Name: Arthi
Student Age: 32

Bu fərdi dəyişənlərə metodlardan istifadə etmədən birbaşa başqa bir sinifdən daxil olmağa çalışdığımızı düşünək, aşağıdakı kimi bir səhv alacağıq. Bu dəyişənlər xüsusi olduğundan, görünmədiyi üçün səhv atacaq,

public class Department {
  public static void main(String[] args) {
    Student s = new Student();
    s.name = "Arthi";
    s.age = 32;
  }
  
}

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
  The field Student.name is not visible
  The field Student.age is not visible

  at Department.main(Department.java:8)

OOPs anlayışları - Miras

Bir sinif başqa bir sinifin metodlarını və dəyişənlərini yenidən istifadə edə bildikdə, buna OOP deyirik Java kimi konsepsiya Miras. Bu sinif digər siniflərin məlumatlarını və funksiyalarını uzanır açar söz. Valideyn sinfi əsas sinif və ya super sinif və ana sinfi uzadan sinifə uşaq sinfi və ya alt sinif və ya törəmə sinif. Başqa sözlə, bu OOPs konsepsiyasını Java-da istifadə edərək, bütün dəyişənləri və metodları miras alaraq mövcud sinifdən istifadə edərək yeni bir sinif təyin edə bilərik.

Java-da Nesne yönümlü proqramlaşdırmanın bu xüsusiyyətinin əsas istifadəsi dəstək verməkdir münasibətdir. Misal üçün:

  • Avtomobil bir vasitədir
  • Skripka bir alətdir
  • Laptop bir cihazdır

Bütün sözlər sonra is-a ifadə edir valideyn sinif və əvvəllər bütün sözlər is-a ifadə edir alt sinif.

sintaksis

class A {
 //code
}

class B extends class A {
  //code
}

A sinfi valideyn sinif və B sinfi uşaq sinif.

uzanır dır,-dir,-dur,-dür söz Java'da Miras OOPs konsepsiyasını dəstəkləyir

Java-da bu əsas OOPs konsepsiyası haqqında Miras adlı bir düşüncəmizə sahib olduğumuz üçün sadə bir nümunə ilə təfərrüatlarına nəzər salaq.

Miras nümunəsi

Burada Vehicle bir simli dəyişən olan ana sinifdir ad və 4 fərqli metod startVehicle (), applyBrakes (), stopVehicle () və setName. Həm də funksiya tətbiqini ehtiva edir.

/ * Fayl adı: Vehicle.java * / - Ana sinif

public class Vehicle {
  String name;
  
  public void startVehicle() {
    System.out.println("Starting the vehicle");
  }
  
  public void applyBrakes() {
    System.out.println("Apply brakes");
  }
  
  public void stopVehicle() {
    System.out.println("Stopping the vehicle");
  }
  
  public void setName(String name) {
    this.name = name;
  }
}

/ * Fayl adı: Car.java * / - Uşaq sinfi

İndi adlı başqa bir sinif yaradırıq Avtomobil.java və onu genişləndirin Avtomobil sinfi. Beləliklə Avtomobil sinfi uşaq sinfi olur. Bu sinif, aşağıdakı kodda gördüyünüz kimi, Vasitə sinfinin bütün dəyişənlərini və metodlarını miras ala bilər. Uşaq sinifində onları yenidən elan etmək lazım deyil.

Sadəcə Avtomobil sinfi üçün bir obyekt yaratmalı və bu obyektdən istifadə edərək məlumat və metodlara çatmalıyıq. Sadə dildə desək, avtomobil bir vasitədir. Beləliklə java dəstəklərində miras dəstəkləyir münasibətdir.

public class Car extends Vehicle{

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

  }

}
Vehicle name: BMW
Starting the vehicle
Apply brakes
Stopping the vehicle

Miras növləri

Aşağıda təsvir olunduğu kimi müxtəlif miras növləri var:

Java-da OOPs anlayışlarıPin

Tək miras

Bir sinif başqa bir sinfi genişləndirəndə buna valideyn-övlad münasibətləri yaradan tək miras deyirik.

Java-da OOP konsepsiya

Çoxsəviyyəli Miras

Uşaq sinfi başqa bir uşaq sinfini (ana sinifini genişləndirən sinif) genişləndirdikdə, buna çox səviyyəli miras deyirik. Məsələn, C sinfi B sinifini, B sinifi A sinfini uzadır.

Java-da OOP konsepsiya

Hiyerarşik Miras

1-dən çox sinif eyni ana sinfi genişləndirəndə buna hiyerarşik miras deyirik. Məsələn, B sinfi və C sinfi A sinifini uzadır.

Java-da OOP konsepsiyaPin

Hibrid miras

Hibrid miras bir çox növ miras ehtiva edir. Məsələn, B sinfi və C sinfi A sinifini (iyerarxik), D sinifi isə B sinfini uzadır (tək)

Java-da OOP konsepsiyaPin

Adı verilən başqa bir miras növü də var Birdən çox miras sinifin 1-dən çox ana sinfi əhatə etdiyi yer. Ancaq bu yox dəstək Java-da, lakin C ++ dilində dəstəklənir.

Miras növləri haqqında ayrıca təlimdə ətraflı şəkildə anlayacağıq.

OOPs anlayışları - Polimorfizm

Polimorfizm, adından da göründüyü kimi, “çox formaları"Bu, eyni metodu fərqli tətbiq edə biləcəyimiz bir çox proqram tətbiqetmələrinin inkişafında geniş istifadə olunan Java-da bir başqa vacib OOPs konsepsiyasıdır.

Bir nümunə ilə javada obyekt yönümlü proqramlaşdırmanın bu xüsusiyyətini başa düşək. Məsələn, hər bir velosiped növü fərqli sürət tutumuna sahib ola bilər. TVS 50 sürət tutumu kimi yavaş sürət velosipedləri Honda Access kimi orta sürət velosipedləri ilə müqayisədə yavaş olur və Pulsar kimi yüksək sürətli velosipedlərlə müqayisədə yavaş ola bilər. Beləliklə, 3 tip velosipedin hamısının sürəti olsa da, tətbiqetmə bir-birindən fərqlənir.

Polimorfizm nümunəsi

/ * Fayl adı: Bike.java * / Ana sinif

Burada var sinif velosiped bir ana sinif olan və bir metodu olan sürət () kimi bir ifadə ilə "Varsayılan sürət".

public class Bike {

  public void speed() {
    System.out.println("Default speed");
  }
}

/ * Fayl adı: SlowBike.java * / - Uşaq sinfi

Sonra bir alt sinif yaradırıq Yavaş Velosiped əsas sinfi uzadan və eyni metoda sahib olan sürət () kimi fərqli bir ifadə ilə yavaş sürət. Bir obyekt yaratdığımız zaman Yavaş Velosiped sinif və sürət metodunu axtarın, "yavaş sürət" yazdırır. Ancaq bir obyekt yaratsaq velosiped sinif, sonra “standart sürət” yazdırılır.

public class SlowBike extends Bike {
  public void speed() {
    System.out.println("Slow speed");
  }
  
  public static void main(String[] args) {
    Bike slow = new SlowBike();
    slow.speed();
    Bike b = new Bike();
    b.speed();
  }

}
Slow speed
Default speed

/ * Fayl adı: MediumBike.java * /

Eynilə, başqa bir alt sinifə sahib ola bilərik Orta velosiped super sinfi uzadır. Beləliklə sürət () bu sinif obyektindən istifadə edərək "Orta sürət" yazdırır.

public class MediumBike extends Bike {
  public void speed() {
    System.out.println("Medium speed");
  }
  public static void main(String[] args) {
    Bike medium = new MediumBike();
    medium.speed();
  }
}
Medium speed

Polimorfizm növləri

Polimorfizmin 2 növü vardır:

  • Statik Polimorfizm - Buna da belə deyilir kompilyasiya-zaman polimorfizm.
  • Dinamik Polimorfizm - Buna deyilir uzunluğu polimorfizm.

Statik Polimorfizm

Polimorfizm tərtib zamanı həll edildikdə, buna statik polimorfizm deyirik. Ən yaxşı nümunələrdən biri metod həddindən artıq yükləmə. Bu o deməkdir ki, bir sinifdə eyni adda bir neçə üsula sahib ola bilərik, lakin fərqli imzalara (parametrlərə) sahibik.

Misal:

Bu, eyni metoda malik olduğumuz statik polimorfizmə və ya metodun həddindən artıq yüklənməsinə bir nümunədir əlavə etmək lakin fərqli parametr siyahıları ilə. Kompilyasiya zamanı parametrlərə əsasən hansı metodun çağırılacağına qərar verir. Birincisi, add metodu parametr olaraq 2 tam ədədə, ikinci add metodu isə parametrə görə 2 double-a malikdir. Add metodunu tam ədədlə çağırdıqda birinci metod, ikiqat ilə çağırdıqda ikinci metod adlanır.

public class StaticDemo {
  
  public void add(int a, int b) {
    int sum = a + b;
    System.out.println("Sum: " + sum);
  }
  
  public void add(double x, double y) {
    double sum = x + y;
    System.out.println("Sum: " + sum);
  }

  public static void main(String[] args) {
    StaticDemo d = new StaticDemo();
    d.add(4, 5);
    d.add(3.2, 5.2);
    

  }

}
Sum: 9
Sum: 8.4

Dinamik Polimorfizm

Polimorfizm iş zamanı həll edildikdə, buna dinamik polimorfizm deyirik. Method aradan qaldırılması dinamik polimorfizm nümunəsidir. Burada JVM həm ana sinif, həm də uşaq sinfi eyni metod adını ehtiva etdiyi üçün hansı metodun çağırılmalı olduğuna iş zamanı qərar verir. Polimorfizmdə gördüyümüz ilk nümunəni xatırlayaq ki, bu da dinamik polimorfizmdir.

misal:

/ * Fayl adı: Bike.java * / Ana sinif

Burada var sinif velosiped bir ana sinif olan və bir metodu olan sürət () kimi bir ifadə ilə "Varsayılan sürət".

public class Bike {

  public void speed() {
    System.out.println("Default speed");
  }
}

/ * Fayl adı: HighBike.java * /

Eyni şəkildə başqa bir alt sinifə sahib ola bilərik FastBike super sinfi uzadır. Beləliklə sürət () bu sinif obyektindən istifadə edərək “Yüksək sürət” yazdırır.

public class FastBike extends Bike {
  public void speed() {
    System.out.println("High speed");
  }
  
  public static void main(String[] args) {
    Bike high = new FastBike();
    high.speed();
  }
}
High speed

Yuxarıdakı nümunədə hər iki sinif eyni metod adına malikdir sürət. İşləmə zamanı JVM hansı üsulu çağıracağına qərar verir. Hansı sinif üçün bir obyekt yaratdığımıza əsasən, uyğun metod çağırılacaq. Burada FastBike sinfi üçün bir obyekt yaratdığımız üçün bu sinif metodu deyilir.

Aşağıdakı koddakı kimi çağırırıq deyək. Velosiped sinif metodunu çağıracaq və “Varsayılan sürət” yazdıracaq

Bike high = new Bike(); 
high.speed();
Default speed

Fərqli polimorfizm növləri haqqında ayrıca dərsdə daha çox nümunə ilə ətraflı müzakirə edəcəyik.

arayış

Şərh yaz

Translate »
1