2015-11-02 72 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(); 

最终,你可以使用父/超级/接口的引用变量,这是它的派生类的实例。