1、實質
一個事物有多種狀態。
eg:狗的吃,既屬於狗的功能也是屬於動物的功能。(一個對象有兩種類型)
2、好處
提高了代碼的擴展性,前期定義的代碼可以使用後期的內容。
3、弊端
前期定義的內容不能使用後期的特有的功能
4、條件
(1)必須有關係,繼承、實現
(2)必須有覆蓋
5、向上轉型
(1)自動類型提升,將子類提升爲父類
animal a=new cat();
產生了侷限性,此時cat的特有功能不能被訪問
(2) 作用:可以限制對特有功能的訪問
如果還要用cat的具體 功能呢?向下轉型
6、向下轉型
cat c=(cat) a;
將animal a轉換成c
作用:使用子類中特有的功能
對於轉型,自始至終都是子類對象做着變化。
7、instanceof
用於判斷對象的具體類型,只能使用在引用數據類型的判斷。
eg:
if (a instanceof cat) ps. cat處可以使對象也可以是接口
{
cat c=(cat) a;
c.catchmouse();
}