泛型:
一般的类和方法,只能使用具体的类型,要么是基本类型,要么是自定义的类。如果要编写可以应用多种类型的代码,这种刻板的限制对代码得束缚会就会很大。
泛型在定义类,接口和方法时使类型(类和接口)成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数为您提供了一种使用不同输入重复使用相同代码的方法。区别在于形式参数的输入是值,而类型参数的输入是类型。
状态,实现和类型的多重继承:
类和接口之间的一个重要区别是类可以具有字段,而接口则不能。另外,您可以实例化一个类来创建对象,而接口不能这样做。如“ 什么是对象? ”部分中所述 。,对象将其状态存储在类中定义的字段中。Java编程语言不允许您扩展多个类的原因之一是避免状态的多重继承问题,这是从多个类继承字段的能力。例如,假设您能够定义一个扩展多个类的新类。当通过实例化该类创建对象时,该对象将继承该类所有超类的字段。如果来自不同超类的方法或构造函数实例化同一字段怎么办?哪个方法或构造函数优先?因为接口不包含字段,所以您不必担心状态的多重继承引起的问题。
实现的多重继承是从多个类继承方法定义的能力。这种类型的多重继承会产生问题,例如名称冲突和歧义。当支持这种多重继承的编程语言的编译器遇到包含具有相同名称的方法的超类时,它们有时无法确定要访问或调用的成员或方法。另外,程序员可以通过向超类添加新方法来无意间引入名称冲突。 默认方法介绍实现的多重继承的一种形式。一个类可以实现多个接口,该接口可以包含具有相同名称的默认方法。Java编译器提供了一些规则来确定特定类使用哪种默认方法。
Java编程语言支持type的多重继承,这是类实现多个接口的能力。一个对象可以具有多种类型:其自己的类的类型以及该类实现的所有接口的类型。这意味着,如果将变量声明为接口的类型,则其值可以引用从实现该接口的任何类实例化的任何对象。