Abstraction

Tutaq ki, Car, BMW, Mercedes classlarimiz var. Car classinda start stop speedUp metodlari movcuddur. BMW ve Mercedes Car classindan extend etdikden sonra bu metodlari Override elemelidir ki, ozune uygunlashdirsin.

Eger Override elemek yaddan chixsa, ve bashqa adli metod duzeltse, bu zaman arxitekturadan qiraga chixmish olacaq.

Buna gore abstract class lardan istifade olunur. Abstract class da verdiyimiz arxitekturani, yeni verdiyimiz metodlar mutleq override olunmalidir.

Abstract classlarin obyektini yaratmaq mumkun deyil

Eger yaratmaga cehd etsek, bu zaman JVM ozu avtomatik obyekt yaradir ve bu obyekt abstract class in obyekti olmur, sadece onu extend ede classin obyekti olur.

Car abstractCar = new Car() {
    @Override
    public void start() {

    } 
    
    @Override
    public void stop() {

    }
};

Inner Class ve Nested Class anlayishlari

Inner class dedikde, Class daxilinde yaradilan ve yalniz obyekte xas olan class basha dushulur. (non-static)
Nested class dedikde, Class daxilinde yaradilan ve class a aid olan class basha dushulur (static)

Konkret Metodlar

Abstract class daxilinde konkret metodlar yaratmaq uchun abstract keyworddan istifade olunmur. Tutaq ki, Car classinda startAndStop metodu var. Bu metod hemen class-daki abstract start ve stop metodlarini cagirir.
Konkret metodlarda Override olunmaq teleb olunmur. Amma lazim olduqda , override oluna biler. Ashagidaki kod numunesinde polimorfizme esaslanaraq yaradilan obyektin, startAndStop metodunu cagirmaq olar.

Car bmw = new BMW();
bmw.startAndStop();

Comments

Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?

@Transactional annotation haqqinda. Cascade istifade olunmasi