Abstract class və method nədir və daha çox nə üçün istifadə olunur, program yazılımında istifadə etmək yararlıdır yoxsa yox, birdə daha bu method və classlardan nə vaxt istifadə olunur?
|
Verilmiş və sayı 2700-ü ötən sualların 99.81 %-i cavablanmışdır.
Bu o deməkdir ki, sizin vermək istədiyiniz sualın cavablanmamaq ehtimalı 1/100-dən də azdır. |
facebook ebay PayPal wordpress windows sayt php java internet Windows 7 domen ubuntu YouTube oyun Android mysql video google c++ DLE LİNUX notebook hosting Nokia hostinq chrome domain modem HTML proqram Delphi elektron ticarət telefon adsl antivirus parol blackberry kompyuter email iphone format Windows7 samsung HP Kompüter termin wi-fi Server cms laptop
Sual vermək üçün sağ sütundan "Üzvlər üçün giriş" bölməsindən hesaba daxil olun, hesabınız yoxdursa qeydiyyatdan keçin və ya birbaşa Facebook connect düyməsi ilə avtomatik qeydiyyatdan keçin.
Suallar IT sferaya aid olmalıdır(Kompyuter, internet, proqramlaşdırma, elektron ticarət və.s.).
Cavabını axtardığınız sualı əvvəlcə burada qısa cümlə ilə yazıb axtarın, ola bilsin ki, o sual daha əvvəl verilib və cavablandırılıb:
Loading
Abstract class və method nədir?
Verilmiş cavablar və edilən şərhlər
Abstract class və method nədir? sualına 5 cavab varElektron jurnal
Cavablar.net saytında yığılan sual-cavab bazası əsasında periodik olaraq PDF formatında elektron jurnallar dərc olunur. İndiyədək 3 belə e-jurnal buraxılıb, bundan sonrakı jurnalların hazırlanmasını siz özünüz də edə bilərsiniz.
Düzgün yazılış
Sual və cavab yazarkən mütləq çalışmalıyıq ki dil qaydalarına uyğun sual və cavablar yazaq. Bununla da oxşar suallarla internetdə axtarış edəcək soydaşlarımızın işini asanlaşdırmış, onlara fayda vermiş olarıq.








Buradan çox faydalı cavablar oxuya bilərsiniz: http://cavablar.net/2011/03/29/object-yonlu-proqramlasdirma-2/
Qane etməsə yəqin yeni cavab verən ekspertlərimiz olacaq.
Abstract method ele bir metoddur ki bu metoddan obyekt (instance) yaradabilmersen. Abstract metodu extend eliyende onun bütün abstract metodlarını override elemek mecburiyyetindesen. Bunu esasen bir anlaşma olaraq fikirleşsen daha yaxşı başa düşersen eğer bir abstract metoddan extend edirsense öz sinifivi sen razılıq verirsenki menim sinifim o metodun bütün abstract metodlarına sahib olacaq. Bunların nece işledileceğiyle bağlı bir yazı yazmışdım blogumda aşağdaki linklerden baxabilersen
http://developersland.net/index.php/interfaceabstractfark.html
Verdiyim linkde interface ve abstract arasındaki ferq’e deyinerek başa salmağa çalışmışam her ikisini de teze öyrenmeye başlayırsansa bunların iksini de böyük ehtimalla sef salabilersen o nezerden de faydalı olabiler senin üçün. Bele bir misal elave edim fikirleş ki bir proyektde birden çox db işledirsen mysql, oracle, sql vs. istifadeçi bunlardan birini seçmelidi bu veziyette sen her bir database üçün ayrı ayrı if else yazmaq yerine Database adında bir abstract metod yazarsan onun içine de her database de işledilen ortaq funksiyalar üçün abstract bir metod yazarsan meselen connect() metodu. Butun db lerin connect metodu ferqli adlarda olabiler meselen biri baglan() metodu birisi con() metodu… sen bütün bu database siniflerini bizim evvelceden yarattığımız Database adlı metoddan extend elesen onda mysql, oracle vs. hamısının özüne aid bir connect metodu olacaq çükü hammısı bunu ferqli şekilde override edecek.
public class Mysql extends Database { @override public void connection() { //Kod... } } public class Oracle extends Database { @override public void connection() { //Kod... } } abstract class Database { abstract public void connect(); public String errorMesajı() { return "Error Çıxdı"; } }Kodumuzda ise aşağdaki kimi olsun…
Database db; if(istifadeci seçir MySql) { db=new Mysql(); } else if(istifadeçi seçir Oracle) { db=new Oracle(); }//bundan sonra yazacağın kodlar ise db ile elemek istediyin bütün emeliyyatlar üçün eyni olacaq heresi üçün ayrı ayrı uzun kodlar yazmalı olmayacaqsan.
db.connect(); if(nese problem varsa) { db.errorMesajı(); }Gördüyün kimi abstract metodun kömeyiynen yazmalı olduğumuz kodlar olduqça azalır. Bundan elave fikir verdinse errorMesajı adında abstract olmayan bir metod da yazdıq. Abstract sinifler abstract olmayan metodlara da sahip olabiler bu metodun içinde de bütün db ler üçün eyni olan error mesajını yazdırırıq. MySql ve Oracle siniflerimiz bu metodları override elemeden olduğu kimi işledebilerler bu da eyni kodları yazmaqdan qurtarır bizi kodumuzu sadeleştirmeye kömek edir.
Əvvəla cavablandırdığınız üçün təşəkkür edirəm. Sizin izahınızdan onu başa düşdüm ki, abstract class və methodlar sadəcə kod hissəsini sadələşdirmək üçün istifadə edirik. Çəkdiyiniz misaldan da göründüü kimi bir db abstract class yaradır daha sonra isə ondan extendle vərəsə alırıq bəs bunu adi classlada edə bilmərikmi nəticədə yenədə ondan vərəsə götürə bilərik. Abstractı fərqli edən nədi?
Abstract’ın adi sinifden ferqi odur ki sinifler abstract bir sinifden extends eliyende biz 100% emin olabilirik ki exttends eden sinif abstract sinifin bütün abstract metodlarının içini dolduracaq. Abstract metodlar override edilmemiş compiler icaze vermeyecek kodu run etmeye.