Mündəricat
Abstraksiya nədir
Java-da olan abstraksiya OOP anlayışlar, digər detalları gizlədərək istifadəçiyə yalnız tələb olunan məlumatları göstərmək prosesidir. Məsələn, bir mobil telefonu düşünün, yalnız zəng düyməsinə basaraq lazımi nömrəni yığacağını bilirik. Ancaq bir zəngin necə işlədiyini faktiki olaraq bilmirik. Bunun səbəbi daxili mexanizmin bizə görünməməsidir. Bu, mücərrədliyin əsl nümunəsidir. Eynilə, mücərrədləşdirmə də obyekt yönümlü proqramlaşdırmada eyni şəkildə işləyir. Bu təlimatda biz Java mücərrəd dərsləri və metodlarından istifadə edərək mücərrədliyə necə nail olacağını öyrənəcəkdir.
Java Abstraktsiyasına nail olma yolları
Javada abstraksiyanı 2 yoldan aşağıda əldə edə bilərik.
İnterfeysdən istifadə edərək abstraksiya əldə etmək barədə daha çox məlumat əldə etmək üçün Java təlimatında İnterfeysə müraciət edə bilərsiniz.
Abstraksiya istifadəsi
- Tətbiq detallarını gizlədərək təhlükəsizlik təmin edir.
- Üst sinifin irsi mücərrəd metodunun funksionallığını həyata keçirməsi üçün alt sinif üçün rahatlıq təmin edir.
Java mücərrəd sinfi və metodları haqqında ətraflı müzakirə edək.
Java-da mücərrəd sinif
İlə bir sinif elan etdiyimiz zaman mücərrəd açar söz, buna mücərrəd bir sinif deyirik. mücərrəd bir sinif və metodla birlikdə istifadə edə biləcəyimiz, daxilolmayan bir dəyişdirici açar sözdür. Mücərrəd sinif, yerinə yetirilməmiş metodları ehtiva edən bir super sinif olan xüsusi bir sinifdir. Buna görə ana mücərrəd sinfi miras alan alt sinif bütün mücərrəd metodları tətbiq etməlidir.
Abstrakt sinifin xüsusiyyətləri
- Sınıfın sinif tərifində mücərrəd bir açar söz olmalıdır
- Abstrakt sinif mücərrəd metodlara və mücərrəd olmayan metodlara sahib ola bilər.
- Bir sinifdə mücərrəd bir metod varsa, o zaman mücərrəd bir sinif olaraq təyin edilməlidir.
- Ya konstruktorlar varsayılan və ya parametrləşdirə bilər.
- Mücərrəd sinif üçün obyekt yaradılmasına icazə vermir.
- Son və statik metodları da təyin etməyə imkan verir
- Abstrakt sinfə yalnız vasitəsilə daxil ola bilərik miras istifadə edərək uzanır açar söz.
- Mücərrəd sinfi uzadan sinif bütün mücərrəd metodları tətbiq etməlidir.
- Abstrakt bir sinif dəyişənləri də əhatə edə bilər.
Mücərrəd sinif sintaksis
abstract class class_name { abstract return_type methodname(); //abstract method return_type methodname() { //non-abstract method } }
Abstrakt sinif nümunəsi
Aşağıda mücərrəd bir sinif adlı sadə bir nümunə verilmişdir Meyvə ki, var zövq mücərrəd bir metod kimi. Fərqli meyvələrin fərqli zövqləri olduğundan, mücərrəd sinfi genişləndirən sinif öz zövq tətbiqinə sahib ola bilər. Abstrakt sinif metodunu tətbiq etmək üçün sinif uzanır sinif tərifində açar söz.
abstract class Fruits { abstract void taste(); } class Apple extends Fruits { @Override void taste() { System.out.println("Sweet taste"); } } public class AbstractDemo { public static void main(String[] args) { Apple a = new Apple(); a.taste(); } }
Sweet taste
Başqa bir sinfin eyni mücərrəd sinfi genişləndirdiyi başqa bir nümunəyə baxaq. Budur başqa bir sinifimiz var Ananas uzanır Meyvələr Onun tətbiqinin metoddakı metoddan fərqli olduğunu görə bilərsiniz alma sinif. Beləliklə, indi soyutlamanın əsas istifadəsini başa düşə bilərsiniz. Ana mücərrəd sinfi miras alan hər bir alt sinif mücərrəd metodu həyata keçirmək üçün öz rahatlığına malikdir.
abstract class Fruits { abstract void taste(); } class Apple extends Fruits { @Override void taste() { System.out.println("Sweet taste"); } } class Pineapple extends Fruits { @Override void taste() { System.out.println("Sour taste"); } } public class AbstractDemo { public static void main(String[] args) { Apple a = new Apple(); Pineapple p = new Pineapple(); a.taste(); p.taste(); } }
Sweet taste Sour taste
Java-da Abstrakt Metodlar
Açar sözdən istifadə etdikdə mücərrəd bir metod elan edərkən buna mücərrəd metod deyirik. Abstrakt metodların yalnız bir funksiya bəyannaməsi var və metodun tətbiqi yoxdur. Bu, yalnız boş bir bədən ehtiva etdiyi və metodun içərisində heç bir kod olmadığı deməkdir. Mücərrəd sinfi miras alan sinif mücərrəd metodu həyata keçirir.
Abstrakt metodun xüsusiyyətləri
- Abstrakt metodlardan yalnız mücərrəd sinif daxilində istifadə edə bilərik.
- Abstrakt metodun metod gövdəsində heç bir kodu yoxdur.
- Açar sözdən istifadə etməliyik mücərrəd mücərrəd bir metod elan etmək.
Abstrakt metodun sintaksisi
abstract returntype methodname();
Abstrakt metodun nümunəsi
Yuxarıdakı abstrakt sinif nümunəsində gördüyümüz eyni nümunəni nəzərdən keçirək. Burada dad heç bir tətbiqi olmayan mücərrəd bir üsuldur.
abstract class Fruits { abstract void taste(); //abstract method } class Apple extends Fruits { @Override void taste() { System.out.println("Sweet taste"); } } public class AbstractDemo { public static void main(String[] args) { Apple a = new Apple(); a.taste(); } }
Abstrakt və mücərrəd olmayan metodlarla mücərrəd sinif
Daha əvvəl müzakirə etdiyimiz kimi, mücərrəd bir sinif həm mücərrəd, həm də mücərrəd olmayan metodlara sahib ola bilər. Bu, superklassın hansı üsula sahib olduğuna və alt sinifin hansı metodları tətbiq edə biləcəyinə qərar vermək üçün rahatlıq təmin edir.
Aşağıdakı nümunədə, zövq bir mücərrəd metod, və GetFruitName birdir mücərrəd olmayan metod. Beləliklə, alt sinif bu metoddan birbaşa mirasın bir hissəsi kimi istifadə edə bilər.
abstract class Fruits { String fruitname; //abstract method abstract void taste(); //non-abstract method public void getFruitName(String fruit ) { this.fruitname = fruit; } } class Apple extends Fruits { @Override void taste() { System.out.println("Sweet taste"); } } public class AbstractDemo { public static void main(String[] args) { Apple a = new Apple(); a.getFruitName("Apple"); System.out.println("Fruit name: " + a.fruitname); a.taste(); } }
Fruit name: Apple Sweet taste
Abstrakt sinif konstruktorları
Abstrakt sinif həm də konstruktorları dəstəkləyir. Parametrləşdirilmiş və ya standart quruculardan istifadə edə bilərik. JVM, mirasda gördüyümüz kimi dolayı olaraq standart qurucuları çağırır.
Aşağıdakı nümunədə mücərrəd sinifdə parametrləşdirilmiş konstruktordan istifadə etdik. Bu konstruktoru alt sinif konstruktorundan super söz. Obyekt yaradılması zamanı alt sinif konstruktoru çağrıldıqda, o, Meyvələr konstruktorunu çağırır və əvvəlcə yerinə yetirir. Bundan sonra Apple konstruktorundakı qalan ifadələri icra edir.
abstract class Fruits { String fruitname; String color; Fruits(String color) { this.color = color; System.out.println("Fruits constructor"); } //abstract method abstract void taste(); //non-abstract method public void getFruitName(String fruit ) { this.fruitname = fruit; } } class Apple extends Fruits { Apple(String color) { super(color); System.out.println("Apple constructor"); } @Override void taste() { System.out.println("Sweet taste"); } } public class AbstractDemo { public static void main(String[] args) { Apple a = new Apple("red"); a.getFruitName("Apple"); System.out.println("Fruit name: " + a.fruitname); System.out.println("Fruit color: " + a.color); a.taste(); } }
Fruits constructor Apple constructor Fruit name: Apple Fruit color: red Sweet taste
Abstrakt sinif və interfeys arasındakı fərq
İndi mücərrəd sinif haqqında başa düşdük, mücərrəd sinif və interfeys arasındakı fərqi görək.
Abstrakt sinif | Interface |
---|---|
Abstrakt sinif həm mücərrəd, həm də mücərrəd olmayan metodlara sahib ola bilər | İnterfeysdə yalnız mücərrəd metodlar ola bilər. Java 8-dən, standart metodları dəstəkləyir |
Çoxlu mirası dəstəkləmir | Çoxlu mirası dəstəkləyir |
Abstrakt açar sözdən istifadə edir | İnterfeys açar sözündən istifadə edir |
Abstrakt sinfi miras almaq üçün açar sözdən istifadə edir | İnterfeysi tətbiq etmək üçün açar sözdən istifadə edir |
Başqa bir Java sinfini genişləndirə bilər və eyni zamanda interfeys tətbiq edə bilər | Yalnız başqa bir interfeysi genişləndirə bilər |
Üzvlər xüsusi, qorunan və s. Kimi giriş dəyişdiricilərinə sahib ola bilərlər | Üzvlər yalnız ümumi ola bilər |
Statik, qeyri-statik, son və ya son olmayan dəyişənlərə sahib ola bilər. | Yalnız statik və son dəyişənlərə sahib ola bilər |