Niyə interfeyslər lazımdır? İnterfeys varisliyi niyə lazımdır? Polimorfizm nə üçün lazımdır? İnterfeyslərin necə qurulacağını oxuyan və başa düşən, lakin səbəbini başa düşməyənlər üçün.
İmtina: Bu və sonrakı məqalələrdə siniflərin və metodların adları rus dilində veriləcəkdir.
Obyekt yönümlü proqramlaşdırmanın (OOP) prinsiplərinə gəldikdə: polimorfizm, irsiyyət və inkapsulyasiya, real dünya analogiyalarından istifadə etmək faydalıdır. OOP-un böyük üstünlüyü ondan ibarətdir ki, biz proqramda real kainatın bir hissəsini simulyasiya edə bilərik. İvanovlar ailəsini modelləşdirək: ata , ana və oğlan Petya . Atadan Petya çay içərkən slurping vərdişini, anadan isə oxuyarkən dodaqlarını büzmək vərdişini miras aldı . Bu vəziyyəti bir proqrama daxil etməyə çalışsaq, üç siniflə nəticələnəcəyik:class Папа
class Мама
class Петя
Ata və ananın Pitə ötürülməli olan vərdişləri var . Vərdişlər bir növ hərəkətlərdir - buna görə də onları proqram dünyasında üsul kimi tətbiq etmək daha yaxşıdır: Baba Birinci :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
}
}
İndi ana :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
}
}
Əgər mirasdan danışırıqsa, kodu belə yazmaq məntiqlidir:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
Yəni Petyanı atadan və anadan eyni anda miras almaq . Bunu belə yazsanız, kompilyator şikayət edəcək, çünki Java-da siz çoxlu sinif irsini həyata keçirə bilməzsiniz. Yeri gəlmişkən, bu, C++-da mümkündür, Java-da deyil, çünki çoxlu mirasla böyük problemlər yarana bilər: İnternetdə ətraflı yazırlar . Bu "mümkün olmayan" dan çıxmaq üçün Java-nın interfeysləri var. Və vərdişlər üçün öz interfeysimizlə qarşılaşacağıq. Hətta iki: Onlar belə görünəcək:
public interface ПривычкиПапы {
public void прихлюпывать();
}
public interface ПривычкиМамы {
public void поджимать();
}
İnterfeysdə biz yalnız vərdişləri təsvir etdik, lakin onların konkret olaraq nə etdiklərini təsvir etmədik, çünki xüsusi tətbiqi dərslərdə yazacağıq. Əvvəlcə ata və anaya qanuni vərdişlərini verək .
class Папа implements ПривычкиПапы {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
}
class Мама implements ПривычкиМамы{
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
İndi isə ata və anadan Pitə vərdişləri eyni anda ötürmək tamamilə qanunidir
class Петя implements ПривычкиПапы, ПривычкиМамы {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
Yəni Java-da çoxlu tətbiqetmə (daha tez-tez həyata keçirmə adlanır) olduqca mümkündür. İnterfeyslərin mənası indi aydın olmalıdır - Java-da interfeyslərdən istifadə edərək çoxlu varislik həyata keçirə bilərsiniz. Vəziyyəti daha da inkişaf etdirsək, məsələn: nəhayət, ata və ananın Petyaya ötürmədikləri vərdişləri var və Petyanın da öz şəxsi vərdişləri ola bilər. Bu mühüm Santa Barbaranı Java təyyarəsinə necə köçürəcəyinizi növbəti epizodlarda öyrənəcəksiniz. Bu, interfeysləri başa düşmək üçün yeganə nümunə deyil.Əgər aşağıdakı məqalələri oxumamısınızsa, mütləq oxuyun: Java-da interfeyslər (açıq deyilsə, profilinizdən çıxa və ya inkoqnito rejimində oxuya bilərsiniz) Niyə interfeyslərə ehtiyac var Java - məqalədəki bütün nümunələri burada tətbiq edin və həm interfeyslərdə, həm də siniflərdə metodları dəyişdirin: metodların adları, imzalar (metodun giriş kimi qəbul etdiyi), metodların çıxış növləri. Özünüz dərk edin: - sinif və abstrakt sinif ilə interfeys həyata keçirərkən fərq; - standart üsullar.
GO TO FULL VERSION