[英]About calling subclass methods in Java
下面的代碼來自教科書:
CommissionEmployee3 commissionEmployee = new CommissionEmployee3(
"Sue", "Jones", "222-22-2222", 10000, .06 );
BasePlusCommissionEmployee4 basePlusCommissionEmployee =
new BasePlusCommissionEmployee4(
"Bob", "Lewis", "333-33-3333", 5000, .04, 300 );
System.out.printf( "%s %s:\n\n%s\n\n",
"Call CommissionEmployee3's toString with superclass reference ",
"to superclass object", commissionEmployee.toString() );
System.out.printf( "%s %s:\n\n%s\n\n",
"Call BasePlusCommissionEmployee4's toString with subclass",
"reference to subclass object",
basePlusCommissionEmployee.toString() );
CommissionEmployee3 commissionEmployee2 =
basePlusCommissionEmployee;
System.out.printf( "%s %s:\n\n%s\n",
"Call BasePlusCommissionEmployee4's toString with superclass",
"reference to subclass object", commissionEmployee2.toString() );
我想問為什么它可以使用“ commissionEmployee2.toString()”?
編譯器不會出錯嗎?
如果該類沒有該方法,則會發生編譯器錯誤。 但是commissionEmployee2
使用的是超級類方法里面的Object類。
toString()
方法屬於Object
類,它是所有Java類的超類,因此沒有錯誤。
如果您在類中重寫它,它將執行該重寫的實現,否則將執行Object類的默認實現。
toString()
方法在Object類中定義,Object類是所有Java類的超類。 您可以根據需要在類中重寫,否則Object
類將提供默認實現。
如何使用toString()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.