Abstract class bilan namuna
Download 18.45 Kb.
|
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"); } } 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
ma'muriyatiga murojaat qiling