Delegate void Message
Download 184.94 Kb.
|
Amaliyot ishi Dasturlash texnologiyalari
Abstrakt sinflar.
Oddiy sinflardan tashqari, Java-da abstrakt sinflar mavjud. Abstrakt sinf oddiy sinfga o'xshaydi. Abstrakt sinfda siz maydonlar va usullarni ham belgilashingiz mumkin, lekin shu bilan birga ob'ekt yoki mavhum sinfning namunasini yarata olmaysiz. Abstrakt sinflar olingan sinflar uchun asosiy funksionallikni ta'minlash uchun mo'ljallangan. Va olingan sinflar allaqachon ushbu funktsiyani amalga oshiradi. Abstrakt sinflarni belgilashda mavhum kalit so'z ishlatiladi: public abstract class Human{ private String name; public String getName() { return name; } } Ammo asosiy farq shundaki, biz uning ob'ektini yaratish uchun mavhum sinfning konstruktoridan foydalana olmaymiz. Masalan, quyidagicha: Human h = new Human(); Oddiy usullardan tashqari, mavhum sinf mavhum usullarni o'z ichiga olishi mumkin. Bunday usullar mavhum kalit so'z bilan belgilanadi va amalga oshirilmaydi: public abstract void display(); Olingan sinf asosiy abstrakt sinfda mavjud bo'lgan barcha mavhum usullarni bekor qilishi va amalga oshirishi kerak. Shuni ham hisobga olish kerakki, agar sinfda kamida bitta abstrakt metod mavjud bo'lsa, u holda bu sinf mavhum sifatida belgilanishi kerak. Abstrakt darslar nima uchun kerak? Aytaylik, biz bank xizmati dasturini tuzamiz va unda uchta sinfni aniqlaymiz: shaxsni tavsiflovchi shaxs, bank xodimini tavsiflovchi Xodim va bank mijozini ifodalovchi Mijoz sinfi. Shubhasiz, Xodim va Mijoz sinflari Person sinfidan olinadi, chunki ikkala sinf ham ba'zi umumiy sohalar va usullarni baham ko'radi. Va barcha ob'ektlar xodim yoki bank mijozini ifodalashi sababli, biz to'g'ridan-to'g'ri Person sinfidan ob'ektlar yaratmaymiz. Shuning uchun uni mavhum qilish mantiqan. public class Program{ public static void main(String[] args) { Employee sam = new Employee("Sam", "Leman Brothers"); sam.display(); Client bob = new Client("Bob", "Leman Brothers"); bob.display(); } } abstract class Person { private String name; public String getName() { return name; } public Person(String name){ this.name=name; } public abstract void display(); } class Employee extends Person{ private String bank; public Employee(String name, String company) { super(name); this.bank = company; } public void display(){ System.out.printf("Employee Name: %s \t Bank: %s \n", super.getName(), bank); } } class Client extends Person { private String bank; public Client(String name, String company) { super(name); this.bank = company; } public void display(){ System.out.printf("Client Name: %s \t Bank: %s \n", super.getName(), bank); } } Darslikning yana bir misoli geometrik figuralar tizimidir. Aslida, bunday geometrik shakl yo'q. Doira, to'rtburchak, kvadrat bor, lekin oddiygina raqam yo'q. Biroq, aylana ham, to'rtburchak ham umumiy narsaga ega va ular raqamlardir: abstract class Figure{ float x; float y; Figure(float x, float y){ this.x=x; this.y=y; } public abstract float getPerimeter(); public abstract float getArea(); } class Rectangle extends Figure { private float width; private float height; Rectangle(float x, float y, float width, float height){ super(x,y); this.width = width; this.height = height; } public float getPerimeter(){ return width * 2 + height * 2; } public float getArea(){ return width * height; } } Download 184.94 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling