خطوتان مختلفتان
Employee e1; تصرّح بمتغير مرجعي من نوع Employee. لا تنشئ كائنًا. e1 = new Employee(); تنشئ الكائن وتخزن مرجعه في e1.
Reference Declaration & new
Employee e1; تصرّح بمتغير مرجعي من نوع Employee. لا تنشئ كائنًا. e1 = new Employee(); تنشئ الكائن وتخزن مرجعه في e1.
يمكن كتابة Employee e1 = new Employee();. النوع يسارًا هو Employee، وnew يمينًا تنشئ Instance باستخدام Constructor.
حقول الكائن لها قيم افتراضية. في هذا المثال String name تساوي null، وint age يساوي 0، وdouble salary يساوي 0.0. null هنا تعني عدم وجود مرجع String في الحقل.
القيم الافتراضية تخص Fields. المتغير المحلي داخل Method يجب إسناد قيمة له قبل قراءته؛ لذلك لا يصح استخدام e1 المحلي قبل إسناد مرجع إليه.
public class TestClass {
public static void main(String[] args) {
Employee e1;
e1 = new Employee();
System.out.println(e1.name);
System.out.println(e1.age);
System.out.println(e1.salary);
e1.name = "Mohamed";
System.out.println(e1.name);
}
}public class Employee {
public String name;
public int age;
public double salary;
}Employee e1; دون استعماله بعد.التصريح وحده لا يكفي لاستخدام كائن. وnull ليست نصًا اسمه "null"، حتى لو ظهرت بهذه الكتابة عند الطباعة.
غيّر الاسم الذي يُسند بعد الإنشاء، ولاحظ أن أول ثلاث طباعات تظل القيم الافتراضية.
محاكاة لهذا المثال المحدد، وليست تشغيلًا لكود Java عشوائي.