考虑以下语句: “A超类提供一个辅助数据类型以它的子类的对象”辅助数据类型
同样, “的接口提供了一个辅助数据类型的实现该接口的类对象。 “
什么是辅助数据类型,它在这些语句中意味着什么?一个例子将不胜感激。谢谢。
考虑以下语句: “A超类提供一个辅助数据类型以它的子类的对象”辅助数据类型
同样, “的接口提供了一个辅助数据类型的实现该接口的类对象。 “
什么是辅助数据类型,它在这些语句中意味着什么?一个例子将不胜感激。谢谢。
这意味着可以将子类实例分配给超类的变量,并且类似地,可以将实现接口的类的实例分配给接口类型的变量。
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
@ user5514883你可以说''ArrayList'有一个辅助类型 - 'List'接口。同样,你可以说'LinkedHashMap'有一个辅助类型 - 它的超类'HashMap'。实际上可以有多种次要类型。对于'ArrayList','Collection'也是一个次要类型(因为它是List的超级接口,Object类是所有类的次要类型,因为所有的类都是Object的子类) 。 – Eran
关注的情况一样,
class SuperA{...}
class SubA extends SuperA{...}
interface SuperAInterface{...}
class ImplementsofSuperAInterface implemets ASuperAInterface{...}
,这样就可以做这样的事情,
SuperA refA = new SubA();
ImplementsofSuperAInterface refA = new ASuperAInterface();
最终,你可以使用父/超级/接口的引用变量,这是它的派生类的实例。
如果你想澄清一个语句,你需要提供上下文(源)。 –
Polymorphism https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html –
Foo扩展Bar,那么你可以通过Foo引用Foo以及Bar,因此提供二级数据类型 – SSH