سلام. لطفا به کد زیر توجه کنید:
package com.jetbrains;
class Parent {
}
class Child extends Parent {
}
public class Main {
public static void main(String[] args) {
Parent parent = new Parent();
/*Parent parent1 = new Child();
Child child = new Child();*/
if (Parent.class.getClass().equals(Parent.class.getClass())) {
System.out.println("true");
} else {
System.out.println("false");
}
if (Parent.class.getClass().equals(parent.getClass())) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}
خروجی برنامهی بالا به ترتیب میشه: true و false.
اما نکتهای که ذهن من و مشغول کرده اینه که در دستور شرطی اول، همانطور که مشاهده میکنید به شکل زیر آبجکت کلاس Parent و با خودش مقایسه کردم:
Parent.class.getClass().equals(Parent.class.getClass())
اما در دستور شرطی دوم، از متد ()getClass که بر روی آبجکت کلاس اجرا میشه برای به دست آوردن آبجکت کلاس استفاده کردم. به شکل زیر:
Parent.class.getClass().equals(parent.getClass())
یعنی دوباره من میخواستم در دستور شرطی دوم، آبجکت کلاس Parent و با خودش مقایسه کنم. اما این بار جواب false برگردونده میشه. امکانش هست علت و توضیح بدین؟ ممنون.