مثال متكامل
Temperature تخزن degrees بوحدة Celsius في حقل private. لديها Constructor خالٍ يضع صفرًا وآخر يستقبل initialDegrees، وSetter وGetter للتعديل والقراءة.
Temperature: Fields, Methods & static
Temperature تخزن degrees بوحدة Celsius في حقل private. لديها Constructor خالٍ يضع صفرًا وآخر يستقبل initialDegrees، وSetter وGetter للتعديل والقراءة.
toString ترجع degrees مع " C". Method المكتوبة في الشريحة equals(Temperature) تقارن درجات كائنين بـ==. هذه مقارنة مطابقة لـdouble في المثال، وليست مقارنة تقريبية.
الفرق بين static وInstance: toCelsius تحول Fahrenheit إلى Celsius بالصيغة 5 * (degreesF - 32) / 9. هي static ولا تحتاج كائن Temperature لتعمل. أما toString وgetDegrees فتعمل على بيانات كائن معين.
equals(Temperature) هنا Typed Overload، وليست Override لتوقيع Object.equals(Object). حافظنا على مثال الشريحة ووضحنا هذا الفرق. في النشاط عوّضنا Scanner بمتغير قابل للتعديل، وأضفنا كائنًا ثانيًا لتجربة equals.
public class Temperature {
private double degrees;
public Temperature() { degrees = 0; }
public Temperature(double initialDegrees) { degrees = initialDegrees; }
public void setDegrees(double newDegrees) { degrees = newDegrees; }
public double getDegrees() { return degrees; }
public String toString() { return degrees + " C"; }
public boolean equals(Temperature otherTemperature) {
return degrees == otherTemperature.degrees;
}
public static double toCelsius(double degreesF) {
return 5 * (degreesF - 32) / 9;
}
public static void main(String[] args) {
double degreesF = 212;
double degreesC = toCelsius(degreesF);
Temperature temperatureObject = new Temperature(degreesC);
Temperature other = new Temperature(100);
System.out.println("Equivalent Celsius temperature is " + temperatureObject.toString());
System.out.println(temperatureObject.equals(other));
}
}لا تكتب (5 / 9) * (degreesF - 32) باستخدام العددين الصحيحين؛ 5 / 9 تصبح 0. ولا تفترض أن كل equals بتوقيع مختلف تعيد تعريف Object.equals.
جرّب Fahrenheit = 32 وother Celsius = 0، ثم 212 و100. غيّر أحدهما وحده وشاهد نتيجة equals.
محاكاة لهذا المثال المحدد، وليست تشغيلًا لكود Java عشوائي.