Դաս 21։ Java – Inheritance

0

Inheritance-ը (ժառանգում) կարելի է սահմանել որպես մի գործընթաց, որտեղ մեկ դասը ձեռք է բերում մյուսի հատկությունները։ Վերջինիս կիրառումը դարձնում է ինֆորմացիան կառավարելի հիերարխիկ կարգով:

Դասը, որը ժառանգում է մյուսի հատկությունները, հայտնի է որպես ենթադաս (derived class, child class) իսկ դասը, որի հատկությունները ժառանգված են, հայտնի է որպես գերագույն դաս կամ հիմնական դաս (superclass, parent class):

extends Keyword

extends բանալի բառը օգտագործվում է դասի հատկությունները ժառանգելու համար։ Հետևյալը ներկայացնում է extends keyword-ի շարահյուսությունը։

Syntax

class Super {

…..

…..

}

class Sub extends Super {

…..

…..

}

Կոդի օրինակը

Հետևյալ օրինակը ներկայացնում է Java inheritance-ը։ Այս օրինակում կարող եք հանդիպել երկու դասի՝ Calculation և My_Calculation։

extends բանալի բառը օգտագործելով My_Calculation-ը ժառանգում է Calculation դասի addition() և Subtraction() մեթոդները։

Copy և paste արեք հետևյալ ծրագիրը My_Calculation.java անունով ֆայլում։

Օրինակ՝

class Calculation {

int z;

public void addition(int x, int y) {

z = x + y;

System.out.println(“The sum of the given numbers:”+z);

}

public void Subtraction(int x, int y) {

z = x y;

System.out.println(“The difference between the given numbers:”+z);

}

}

 

public class My_Calculation extends Calculation {

public void multiplication(int x, int y) {

z = x * y;

System.out.println(“The product of the given numbers:”+z);

}

public static void main(String args[]) {

int a = 20, b = 10;

My_Calculation demo = new My_Calculation();

demo.addition(a, b);

demo.Subtraction(a, b);

demo.multiplication(a, b);

}

}

Գործարկեք վերը նշված կոդը, ինչպես ցույց է տրված ստորև։

javac My_Calculation.java

java My_Calculation

Արդյունքը՝

The sum of the given numbers:30

The difference between the given numbers:10

The product of the given numbers:200

Նշված ծրագրում, երբ My_Calculation դասի օբյեկտը ստեղծվում է, նրանում ստեղծվում է նաև գլխավոր դասի՝ Superclass-ի բովանդակության պատճենը: Ահա թե ինչու, օգտագործելով ենթադասի օբյեկտը կարող եք մուտք գործել դեպի գլխավոր դասի անդամներ:

inheritanceSuperclass-ի փոփոխականը կարող է պարունակել ենթադասի օբյեկտը, սակայն օգտագործելով այդ փոփոխականը կարող եք մուտք գործել միայն դեպի superclass-ի անդամներ։ Սյնպես որ երկու դասի անդամներին մուտք գործելու հնարավորություն ունենալու համար առաջարկվում է միշտ ստեղծել փոփոխական ենթադասի համար:

Եթե դիտարկում եք եք վերը նշված ծրագիրը, կարող եք ստեղծել դասի օրինակը ինչպես ներկայացված ստորև: Սակայն օգտագործելով superclass-ի փոփոխականը (cal այս դեպքում), դուք չեք կարող կանչել method multiplication()-ը, որը պատկանում է My_Calculation ենթադասին:

Calculation demo = new My_Calculation();

demo.addition(a, b);

demo.Subtraction(a, b);

Նկատի ունեցեք, որ ենթադասը իր գերադաս դասից ժառանգում է բոլոր անդամները (fields, methods և nested classes): Կոնստրուկտորները անդամներ չեն, ուստի դրանք չեն ժառանգվում ենթադասների կողմից, սակայն գերադաս դասի կոնստրուկտորը հնարավոր է կանչել ենթադասից:

Super keyword

super բանալի բառը նման է this-ին։ super բանալի բառը օգտագործվում է հետևյալ դեպքերում։

  • Այն օգտագործվում է տարբերակելու համար սուպեր դասի անդամներին ենթադասի անդամներից, եթե դրանք ունենան նույն անունները:

  • Այն օգտագործվում է ենթադասից սուպեր դասի կոնստրուկտորին կոչ անելու համար։

Անդամների տարբերակում

Եթե դասը ժառանգում է մեկ այլ դասի հատկությունները: Եվ եթե գերագույն դասի անդամները ունենան նույն անունները, ինչ ենթադասինը, ապա այս փոփոխականները տարբերակելու համար, մենք օգտագործում ենք super բանալի բառ, ինչպես ներկայացված է ստորև։

super.variable

super.method();

Կոդի օրինակը

Կոդի այս հատվածում ներկայացված է տալիս super keyword-ի կիրառումը։

Այս ծրագրում դուք ունեք երկու դաս՝ Sub_class և Super_class, երկուսն էլ ունեն display() անունով մեթոդ և num անունով փոփոխական, սակայն տարբեր արժեքներով: Մենք կանչում ենք display() method-ը երկու դասերի համար և արտատպում երկու դասերի փոփոխական թվերի արժեքը: Ինչպես տեսնում եք, այստեղ մենք օգտագործում ենք super keyword-ը, որպեսզի տարբերակենք գերադաս դասի անդամներին ենթադասից:

Copy և paste արեք հետևյալ ծրագիրը Sub_class.java անունով ֆայլում:

Օրինակ՝

class Super_class {

int num = 20;

 

// display method of superclass

public void display() {

System.out.println(“This is the display method of superclass”);

}

}

 

public class Sub_class extends Super_class {

int num = 10;

 

// display method of sub class

public void display() {

System.out.println(“This is the display method of subclass”);

}

 

public void my_method() {

// Instantiating subclass

Sub_class sub = new Sub_class();

 

// Invoking the display() method of sub class

sub.display();

 

// Invoking the display() method of superclass

super.display();

 

// printing the value of variable num of subclass

System.out.println(“value of the variable named num in sub class:”+ sub.num);

 

// printing the value of variable num of superclass

System.out.println(“value of the variable named num in super class:”+ super.num);

}

 

public static void main(String args[]) {

Sub_class obj = new Sub_class();

obj.my_method();

}

}

Գործարկեք վերը նշված կոդը, ինչպես ցույց է տրված ստորև։

javac Super_Demo

java Super

Ծրագիրը գործարկելուց հետո, կստանաք հետևյալ արդյունքը։

Արդյունքը՝

This is the display method of subclass

This is the display method of superclass

value of the variable named num in sub class:10

value of the variable named num in super class:20

Հարգելի ընթերցող, խնդրում ենք չմոռանալ like տալ մեր ֆեյսբուքյան էջին, քանի որ նորությունների մեծ մասը առաջինը տեղադրվում է հենց այնտեղ։ Ինչպես նաև հետևեք մեզ այլ սոցիալական ցանցերում և, իհարկե, գրանցվեք մեր բլոգում։

Share.