Abstract class bilan namuna


Download 18.45 Kb.
Sana22.12.2022
Hajmi18.45 Kb.
#1041928
Bog'liq
g shu classlarni abstract class orqali


g shu classlarni abstract class orqali birlashtirganda qanday bo'lar edi.
Abstract class bilan namuna:
public abstract class Person {

private String name;


private int age;

public void show() { System.out.println(name + ", " + age); }


public abstract void workInfo(); // abstract metod



// getter setter metodlar.
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getAge() {return age;}
public void setAge(int age) {this.age = age;}
}

// Driver class


public class Driver extends Person {
@Override
public void workInfo() {
System.out.println("I am a driver");
}
}

// Teacher class


public class Teacher extends Person {
@Override
public void workInfo() {
System.out.println("I am teaching");
}
}
// Cook class (oshpaz)
public class Cook extends Person {
@Override
public void workInfo() {
System.out.println("I am cooking");
}
}
Namunada 

  • abstract Person class berilgan.

  • Driver, Teacher, Cook classlari Person class dan inherit (meros) olgan. Bular Person uchun child (bola) class bo'ldi.

  • Child class lar abstract metodni override qildi. Ya'ni abstract workInfo() metodini tana qismini o'zida realizatsiya qildi. 

  •  workInfo()  metodni har class o'ziga moslab override qildi.

Xullas. Driver, Teacher, Cook classlardagi umumiy ma'lumotlarni Person class ga yozdik va person class dan inherit (nasil oldik).
 wokrInfo()  metodining realizatsiyasi 3ta class da ham har xil bo'lgani uchun uni abstract metod qildik va child (bola) classlar shu metodni o'zi xohlagandek realizatsiya qildi.
Shu namuna rasmda:
Agar tepadagi namunani Main class da chaqirib ishlatadigan bo'lsak.
public class Main {

public static void main(String[] args) {


// driver
Driver d = new Driver();
d.setName("Ali");
d.setAge(19);

d.show();


d.workInfo();

// teacher


Person t = new Teacher();
t.setName("Vali");
t.setAge(22);
t.show();
t.workInfo();
}
}
Namunada

  • Driver class odatiy yo'l bilan yaratilid va ma'lumotlar set qilindi. Undan keyin show() va workInfo () metodlar chaqirildi.

  • Teacher classi dan ob'ekt yaratilib u Person classi o'zgaruvchisiga yozildi. Bunda polimorfizimdan foydalandik.
    Ya'ni Teacher classi Person classdan nasil olgan. Shu sababdan Person Teacher classning parentni (otasi) hisoblanadi va o'zida child classlarining ob'ektlarini ushlab turishi mumkin.

  • O'zi Teacher da oddiy usulda ob'ekt olib ketsak ham bo'lar edi. Buni namuna sifatida ko'rsatdik va joyi kelganda ishlatish mumkin.

Abstract class ​oltin qoidalari.

  • Abstract class da  abstract  kalit so'zi bilan belgilangan bo'lishi kerak.

  • Abstract class da  abstract  yoki oddiy  metodlar  bo'ladi.

  • Abstract  metodlarni  tana qismi bo'lmaydi. Ularni child class lar override qiladi.

  • Abstract class dan  ob'ekt  olib bo'lmaydi. Masalan  new  kalit so'zini ishlatib ob'ekt yaratib bo'lmaydi. Uning oddiy child classidan ob'ekt olsak bo'ladi.

  • Oddiy class abstract class dan  inherit  (nasil) oladi.  extends  kalit so'zi yordamida. Nasil olingandan keyin uning  abstract metodlari  realizatsiya qilish kerak.

  • Abstract metodlar  default, public, protected  access modifier larni olishi mumkin. Abstract metod  private  bo'la olmaydi.

  • Abstract metod  static  yoki  final  bo'la olmaydi.

  • Abstract classda  oddiy metodlar  va  o'zgaruvchilar  oddiy classdagi kabi bo'ladi. 

  • Class o'zgaruvchilari  abstract  bo'la olmaydi.

Two Abstract classes
Ikkita abstract classlar bir biri bilan ishlashini ko'rib chiqamiz.
Oddiy class boshqa bir class bilan qanday muomila qilsa Abstract class boshqa bir abstract class bilan xuddi shunday muomila qiladi. Odam ajratish voy uzur Class ajratish yo'q.
Namuna
public abstract class Abst1 {
public abstract void a();
}

public abstract class Abst2 extends Abst1 {


public abstract void b();
}
Namunada 2ta abstract class bor.  Abst2  classi  Abst1  classidan nasil olgan. 
 Abst2  classi o'zi abstract class bo'lgani uchun  Abst1  classdagi  a  abstract metodi  override qilishi shart emas  . 
 Abst2  classida endi  2ta  abstract metodi bor deb xisoblasak bo'ladi. b  metodi o'zida bor edi va  a  metodi  Abst1  dan kelgani.
Download 18.45 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling