2014-06-24 94 views
3

我是Java的新手,所以請耐心等待,我試着看這個問題,但我遇到了麻煩,因爲我不知道這個問題涉及的基本術語。「Parent c = new Child()」和「Child c = new Child()」之間有什麼區別?

假設:

class Parent {} 

class Child extends Parent {} 

之間有什麼區別:提前任何幫助,您可以提供

Parent c = new Child(); 

Child c = new Child(); 

感謝。

+1

多態性

+0

一個區別:給'Child',是不是在'Parent',並嘗試用兩種方式來調用它的方法。 – awksp

+0

(區別在於變量的類型..) – user2864740

回答

3

在運行時間沒有區別。

只有Java編譯器(和類型檢查器)有區別。在第一種情況下,您聲明對c瞭解最多的信息是它是Parent,即使運行時類型更具體。

這主要有兩個作用:

  • c可以在需要Parent時可以使用,但不是當需要
  • ,如果你想的 c類型更改爲另一種類型
  • 一個Child(讓我們假設class Nephew extends Parent)唯一必要的是要改變的實例化(例如,new Child()變得new Nephew()

第二效果是因爲如果代碼編譯並且c被聲明爲Parent,這意味着您沒有使用任何尚未在Parent中聲明的功能,因此從Parent延伸的每個其他類都是有效的substitute

相關問題