OCA Java imtahan mövzuları

Class Inheritance

Bu məqalə ilə yeni – 5-ci “Chapter”ə giriş etmiş oluruq. Hələ ki, mövzular ilə bağlı sadəcə qısa-qısa qeydlər yazacam. Gələcəkdə mövcud vəziyyətə baxıb mövzulara sonradan əlavələr edib, genişləndirə bilərəm.

 

Introducing Class Inheritance

Əgər bir class digər bir classdan törədilibsə, törədilən class “child class” və ya “descendant”, törəməsi alınan class isə “parent class” və ya “ancestor” class adlanır. Əgər X classı Y classından törənibsə, Y də öz növbəsində Z classından törənibsə, X classı dolayı yolla  Z classının da child classı hesab olunur.

Java təkvarisliliyi (single inheritance) dəstəkləyir, yəni bir class birbaşa olaraq ancaq bir parent classdan törənə bilər. Çoxvarisliliyi (multiple inheritance) dəstəkləmir, ancaq zəncirvari şəkildə bir neçə törəmə etmək mümkündür:

class Z { }
class Y extends Z { }
class X extends Y { }

Təkvarislilikdə qeyd etdik ki, bir classın birbaşa olaraq ancaq bir parent classı ola bilər. Lakin parent classın bir neçə child classı ola bilər.

Əgər hər hansı bir classdan törəmə alınmasını istəmiriksə, o zaman həmin classı final edirik. Əgər final classdan törəmə almaq istəsək compiler xəta verəcək:

final class Z { }
class Y extends Z { }  // cannot inherit from final Z

 

Extending a Class

Classın törəməsini almaq üçün extends açar sözündən istifadə edilir.

FIGURE. Defining and extending a class*

Animal.java:

class Animal {

    private int age;
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
}


Lion.java:

class Lion extends Animal {
    private void roar() {
        System.out.println("The " + getAge() + " year old  lion  says:  Roar!");
        System.out.println("Lion is " + age + " year old");  // DOES NOT COMPILE
    }
}

 

 

Applying Class Access Modifiers

Top-level classlar ya public ola bilər ya da ki default, protectedprivate olmasına icazə verilmir. Inner classlar protectedprivate ola bilər, amma inner classlar OCA imtahanı mövzularına daxil deyil.

public  class Test1 { }

class Test2 { }

protected  class Test3 { }  // DOES NOT COMPILE

private  class Test4 { }    // DOES NOT COMPILE

public classlar istənilən classlar tərəfindən istifadə oluna bilər. Lakin default classlara ancaq eyni paketdə olan subclasslar və ya classlar müraciət edə bilər.

Bir .java faylda maksimum bir public class mövcud ola bilər, amma istənilən sayda public olmayan class yaratmaq mümkündür. Ümumiyyətlə, .java faylda public class olmaya da bilər.

Yuxarıda qeyd olunan access  modifiers ilə əlaqəli qaydalar interface`lər üçün də keçərlidir. Top-level interface`lər public və ya default ola bilər. Həmçinin java faylda maksimum bir public interface ola bilər.

 

Creating Java Objects

java.lang.Object yeganə classdır ki, heç bir parent classı yoxdur və javada bütün classlar bu classdan törəyib. Object classını xüsusi olaraq extends etməyə ehtiyac yoxdur, compiler avtomatik olaraq onu əlavə edir. Aşağıdakı classlar ekvivalentdir:

public class Book { }

public class Book extends java.lang.Object { }

Əgər class başqa bir classdan törəmirsə, dərhal həmin classın adının sonuna extends java.lang.Object ifadəsi əlavə edilir. Yox əgər başqa bir classdan törəyirsə, o zaman bu sintaksis əlavə edilmir, amma dolayı yolla həmin classın child`ı hesab olunur. Bir sözlə java.lang.Object hər zaman zəncirin ən yuxarısında dayanır (top of the tree).

 

[topics lang=az]

 

* “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808”, by J.Boyarsky & S.Selikoff

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.