2015-11-02 124 views
0

考慮以下語句: 「A超類提供一個輔助數據類型以它的子類的對象」輔助數據類型

同樣, 「的接口提供了一個輔助數據類型的實現該接口的類對象。 「

什麼是輔助數據類型,它在這些語句中意味着什麼?一個例子將不勝感激。謝謝。

+0

如果你想澄清一個語句,你需要提供上下文(源)。 –

+1

Polymorphism https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html –

+0

Foo擴展Bar,那麼你可以通過Foo引用Foo以及Bar,因此提供二級數據類型 – SSH

回答

1

這意味着可以將子類實例分配給超類的變量,並且類似地,可以將實現接口的類的實例分配給接口類型的變量。

public class BaseClass {} 
public class SubClass extends BaseClass {} 

public interface Inter {} 
public class InterImpl implements Inter {} 

... 

BaseClass var1 = new SubClass(); 
Inter var2 = new InterImpl(); 

而且與真正的類/接口的例子:

List<String> list = new ArrayList<String>(); // ArrayList is a class that implements List 
HashMap<String,Integer> map = new LinkedHashMap<String,Integer>(); // LinkedHashMap is a sub-class of HashMap 
+0

@ user5514883你可以說''ArrayList'有一個輔助類型 - 'List'接口。同樣,你可以說'LinkedHashMap'有一個輔助類型 - 它的超類'HashMap'。實際上可以有多種次要類型。對於'ArrayList','Collection'也是一個次要類型(因爲它是List的超級接口,Object類是所有類的次要類型,因爲所有的類都是Object的子類) 。 – Eran

0

關注的情況一樣,

class SuperA{...} 
class SubA extends SuperA{...} 

interface SuperAInterface{...} 
class ImplementsofSuperAInterface implemets ASuperAInterface{...} 

,這樣就可以做這樣的事情,

SuperA refA = new SubA(); 
ImplementsofSuperAInterface refA = new ASuperAInterface(); 

最終,你可以使用父/超級/接口的引用變量,這是它的派生類的實例。