CodeGym /Kurslar /Java SELF AZ /Polimorfizm

Polimorfizm

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Kitlər və inəklər

Belə maraqlı bir zooloji fakt var: inək kitdən, məsələn, suaygırından daha yaxındır. Məlum olur ki, inəklər və kitlər — yaxın qohumdurlar.

Beləliklə. Sizə OOP-nin daha bir çox güclü alətindən bəhs edək — bu polimorfizmdir. Onun dörd xüsusiyyəti var.


2. İrsi əlaqə — həmişə çıxış yolu deyil

Təsəvvür et ki, sən oyun üçün İnək sinfini yazmısan. Bunun içində çoxlu fields və metodlar var. Bu class-ın obyektləri müxtəlif işlər görə bilir: yeriş etmək, yemək yemək, yatmaq. Bir də inəklər gəzdikdə zəng çalır. Deyək ki, sən bu sinfdə hər şeyi detallı şəkildə yerinə yetirdin.

Amanda layihə sifarişçisi gəlir və deyir ki, oyunun yeni bir səviyyəsini buraxmaq istəyir. Yeni səviyyədə bütün hərəkətlər dənizdə olacaq və əsas qəhrəman kit olacaq.

Sən Kit sinfini layihələndirməyə başlayırsan və anlayırsan ki, o yalnız bir az İnək sinfindən fərqlənir. Hər iki sinfin iş məntiqi çox bənzəyir və sən irsi əlaqədən istifadə etmək qərarına gəlirsən.

Polimorfizm java-da

İnək sinfi parent class roluna ideal uyğun gəlir: onun içində lazım olan bütün dəyişənlər və metodlar var. Yalnız kita üzmək imkanını əlavə etmək qalır. Amma bir problem var: sənin kitinin ayaqları, buynuzları və zəngi var. Axı bu funksionallıq İnək sinfinin içində reallaşdırılıb. İndi nə etmək olar?

Polimorfizm java-da. Irsi əlaqə

3. Metodun Yenidən Təyin Edilməsi

Bizə metodların yenidən təyin edilməsi (dəyişdirilməsi) kömək edir. Əgər biz miras aldığımız metodun bizim yeni sinifdə istədiyimiz şeyi tam yerinə yetirmədiyini görsək, həmin metodu dəyişdirə bilərik.

Metodun yenidən təyin edilməsi

Bəs bu necə edilir? Biz varis sinifimizdə üst sinifin dəyişdirmək istədiyimiz metodu ilə eyni addan olan bir metod elan edirik. Oraya yeni kod yazırıq. Vəssalam: elə bil üst sinifdə köhnə metod heç mövcud olmayıb.

Bu necə işləyir:

Kod Təsvir
class Cow
{
   public void printColor ()
   {
      System.out.println("Mən — ağam");
   }

   public void printName()
   {
      System.out.println("Mən — inək");
   }
}

class Whale extends Cow
{
   public void printName()
   {
      System.out.println("Mən — balina");
   }
}
  • Burada iki sinif müəyyən edilib — CowWhale
  • Whale, Cow-dan miras alıb
  • Whale sinifində printName() metodu yenidən təyin edilib
public static void main(String[] args)
{
   Cow cow = new Cow();
   cow.printName();
}
Bu kod ekrana aşağıdakı yazını çıxaracaq:
Mən — inək
public static void main(String[] args)
{    Whale whale = new Whale();
   whale.printName();
}
Bu kod ekrana çıxaracaq:
Mən — balina

Cow sinifindən miras alıb və printName metodunu yenidən təyin etdikdən sonra, Whale sinifi əslində aşağıdakı məlumatlara və metodlara sahibdir:

class Whale
{
   public void printColor()
   {
      System.out.println("Mən — ağam");
   }

   public void printName()
   {
      System.out.println("Mən — balina");
   }
}
Köhnə metoddan heç xəbərimiz də yoxdur.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION