الـConstructor وأنواعه (No-Arg, Parameterized, Default)

وقت القراءة: 3 دقائق 130 مشاهدة

ما هو الـConstructor؟

  • إنها طريقة خاصة في فئة Java يتم استدعاؤها تلقائيًا عند إنشاء كائن جديد من تلك الفئة.
  • والغرض الأساسي منه هو تهيئة سمات الكائن (الحقول أو المتغيرات) للقيم الأولية المناسبة.
  • فهو يضمن إنشاء الكائنات في حالة صالحة ومتسقة.

قواعد إنشاء Constructors:

  1. نفس اسم الفئة: يجب أن يكون اسم المنشئ مطابقًا تمامًا لاسم الفئة.
  2. لا يوجد نوع إرجاع صريح: ليس لدى المنشئين نوع إرجاع، ولا حتى باطل.
  3. لا يمكن أن تحتوي على Modifiers: لا يمكن الإعلان عن المنشئات على أنها مجردة أو ثابتة أو نهائية أو متزامنة.

أنواع الـConstructor:

  1. No-Arg Constructor: مُنشئ لا يقبل أي arguments.
    public class Product {
        private String name;
        private String description;
        private float price;
        private int quantity;
        private float discount;
    
        public Product() {
            this.name = "No name";
            this.description = "No description";
            this.price = 0.0f;
            this.quantity = 0;
            this.discount = 0;
        }
    }
  2. Parameterized Constructor: مُنشئ يقبل arguments.
    public Product(String n, String d, float p, int q, float dis) {
            this.name = n;
            this.description = d;
            this.price = p;
            this.quantity = q;
            this.discount = dis;
        }
  3. Default Constructor: المُنشئ الذي يتم إنشاؤه تلقائيًا بواسطة مترجم Java إذا لم يتم تعريفه بشكل صريح.

Constructor Chaining

تسلسل المُنشئ: عندما يستدعي المُنشئ مُنشئًا آخر من نفس الفئة، يُسمى ذلك تسلسل المُنشئ.

الكود:

Product class:

public class Product {
    private String name;
    private String description;
    private float price;
    private int quantity;
    private float discount;
    private String color;
    
    public Product() {
        this.name = "No name";
        this.description = "No description";
        this.price = 0.0f;
        this.quantity = 0;
        this.discount = 0;
    }
    
    public Product(String n, String d, float p, int q, float dis) {
        this.name = n;
        this.description = d;
        this.price = p;
        this.quantity = q;
        this.discount = dis;
        System.out.println("constructor: 5");
    }
    
    public Product(String n, String d, float p, int q, float dis, String c) {
        this (n,d,p,q,dis);
        this.color = c;
        System.out.println("constructor: 6");
    }
    
    public void display() {
        System.out.println("Name = " + name);
        System.out.println("description = " + description);
        System.out.println("Price = " + price);
        System.out.println("Quantity = " + quantity);
        System.out.println("Discount = " + Discount);
    }
}

صفات:

  • name: نص يمثل اسم المنتج.
  • description: نص يصف المنتج.
  • price: فاصلة عشرية تخزن سعر المنتج.
  • quantity: عدد صحيح يمثل كمية المنتج.
  • discount: فاصلة عشرية تمثل نسبة الخصم.
  • color: سلسلة (اختيارية) للون المنتج (تمت إضافتها في المُنشئ الثالث).

Constructors:

  • Product() (المنشئ الافتراضي): تهيئة جميع السمات بالقيم الافتراضية (“No name”, “No description”، وما إلى ذلك).
  • المنتج (String n، String d، float p، int q، float dis): مُنشئ ذو معلمات يأخذ وسيطات للاسم والوصف والسعر والكمية والخصم. يطبع "constructor: 5" عند الاستدعاء.
  • المنتج (String n، String d، float p، int q، float dis، String c): مُنشئ ذو معلمات يأخذ الوسائط لجميع السمات، بما في ذلك اللون. يستدعي المُنشئ الثاني داخليًا (“constructor: 5”) ثم يقوم بتعيين اللون. يطبع "constructor: 6" عند الاستدعاء.
  • display(): طباعة معلومات المنتج بتنسيق سهل الاستخدام.

Main Class:

public class Main
{
    public static void main(String args[]) {
        Product p1 = new Product("Camera", "Auto focus", 99, 10, 5, "red");
        Product p2 = new Product();
        p.display();

    }
}

يقوم بإنشاء كائنين:

  • p1 باستخدام المُنشئ الثالث، مما يوفر قيمًا لجميع السمات.
  • p2 باستخدام المُنشئ الافتراضي (لم يتم توفير وسائط).

يحاول استدعاء display() على المتغير المشار إليه بشكل غير صحيح p (يجب أن يكون p2) لعرض القيم الافتراضية.

مشاركة هذا

الـConstructor وأنواعه (No-Arg, Parameterized, Default)

Or copy link

المحتوى
Arabic