Javaمثال مهم يعلمك متى تحتاج إلى إنشاء كلاس مجرد
في المثال التالي قمنا ببناء كلاس إسمه Person
نوعه abstract
, يملك أربعة خصائص نوعهم private
إسمهم name
, gender
, brithday
و isMarried
, و يملك دوال Setter and Getter لهذه الخصائص, و يملك أيضاً دالة إسمها displayInfo()
نوعها abstract
.
بعدها قمنا بتعريف كلاس إسمه Student
يرث من الكلاس Person
و يملك متغير إضافي إسمه specialization
.
بعدها قمنا بتعريف كلاس إسمه Employee
يرث من الكلاس Person
و يملك متغير إضافي إسمه workPlace
.
الفكرة هنا أن أي كلاس سيتم إنشاءه لتمثيل إنسان يجب أن يرث من الكلاس Person
الذي يملك الخصائص المشتركة لكل البشر.
في الأخير سنقوم ببناء الكلاس Main
لتجربة الكود.
public abstract class Person { // هنا قمنا بتعريف الخصائص المشتركة لدى جميع البشر private String name; private String gender; private String birthday; private boolean isMarried; // هنا قمنا بتعريف الكونستركتور public Person(String n, String g, String b, boolean i) { name = n; gender = g; birthday = b; isMarried = i; } // Getter هنا قمنا بتعريف دوال الـ public String getName() { return name; } public String getGender() { return gender; } public String getBirthday() { return birthday; } public boolean getIsMarried() { return isMarried; } // Setter هنا قمنا بتعريف دوال الـ public void setName(String n) { name = n; } public void setGender(String g) { gender = g; } public void setBirthday(String b) { birthday = b; } public void setIsMarried(boolean i) { isMarried = i; } // abstract و التي نوعها displayInfo() هنا قمنا بتعريف الدالة public abstract void displayInfo(); }
public class Student extends Person { String specialization; // هنا قمنا بتعريف خاصية التخصص و التي يملكها فقط التلاميذ // هنا قمنا بتعريف الكونستركتور public Student(String n, String g, String b, boolean i, String s) { super(n, g, b, i); // Person هنا سيتم إرسال أول أربع قيم إلى كونستركتور الكلاس specialization = s; } // بشكل ملائم للتلامذة displayInfo() للدالة Override هنا فعلنا public void displayInfo() { System.out.println("Name: " + getName()); System.out.println("Gender: " + getGender()); System.out.println("Birthday: " + getBirthday()); System.out.println("Specialization: " + specialization); System.out.println("---------------------------------"); } }
public class Employee extends Person { String workPlace; // هنا قمنا بتعريف خاصية مكان العمل و التي يملكها فقط الموظفون و العمال // هنا قمنا بتعريف الكونستركتور public Employee(String n, String g, String b, boolean i, String w) { super(n, g, b, i); // Person هنا سيتم إرسال أول أربع قيم إلى كونستركتور الكلاس workPlace = w; } // بشكل ملائم للموظفين أو العمال displayInfo() للدالة Override هنا فعلنا public void displayInfo() { System.out.println("Name: " + getName()); System.out.println("Gender: " + getGender()); System.out.println("Birthday: " + getBirthday()); if(getIsMarried() == true) { System.out.println("is Married: yes"); } else { System.out.println("is Married: no"); } System.out.println("Work place: " + workPlace); System.out.println("---------------------------------"); } }
public class Main { public static void main(String[] args) { // و هو عبارة عن إنسان له خصائص طالب Student هنا قمنا بإنشاء كائن من الكلاس Student s = new Student("Mhamad", "Male", "1994", false, "Computer Science"); s.displayInfo(); // و هو عبارة عن إنسان له خصائص موظف أو عامل Employee هنا قمنا بإنشاء كائن من الكلاس Employee e = new Employee("Rana", "Female", "1986", true, "Al-Iman school"); e.displayInfo(); } }
سنحصل على النتيجة التالية عند التشغيل.
Name: Mhamad Gender: Male Birthday: 1994 Specialization: Computer Science --------------------------------- Name: Rana Gender: Female Birthday: 1986 is Married: yes Work place: Al-Iman school ---------------------------------