Abstract class və method nədir?

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?


Yadda saxlama
Kateqoriya: Proqramlaşdırma . , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (5 cavab var)

(00:41, 11/02/2012 ) #8547

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.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(02:39, 11/02/2012 ) #8552

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

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(03:15, 11/02/2012 ) #8554

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.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (12:56, 11/02/2012 ) #8571

    Ə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?

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:22, 11/02/2012 ) #8573

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.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (1 saat əvvəl)

Triste cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Software Developer cavab verdi - Adsense ya görə VÖEN gəlir vergisi 20% istəyirlər (6 gün əvvəl)

Triste cavab verdi - Google Adsense vergi (6 gün əvvəl)

E. Hacı cavab verdi - Xif mn kodu (14 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (33 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (40 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (45 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (54 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (58 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (60 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (60 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (62 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (68 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (68 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23288 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024