2 回答
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
TA贡献1891条经验 获得超3个赞
假设你有:
public class A {
public void a(){
}
}
public class B extends A{
public void b(){
}
}
你不能使用 B b = new A();
您可以使用A a = new A();Here you have access toa()方法。
您可以使用A a = new B();Here you have access toa()方法。
您可以使用B b = new B();Here 您可以访问这两种a(), b()方法。
那么有什么好处A a = new B()呢?
假设您有类 B、C、D、E,并且它们都扩展了类 A 或实现了接口 A。现在您可以A a = new B(); A a = new C(); A a = new D()在运行时检查类型,然后将对象转换为特定的类类型,因此您无需声明每种类型有 3 个变量。所有 A 类型变量都有一个容器(变量),它也是子(B、C、D)。
![?](http://img1.sycdn.imooc.com/533e4ce900010ae802000200-100-100.jpg)
TA贡献1887条经验 获得超5个赞
我们以 Java Collections API 为例。为简洁起见,请考虑以下层次结构:
Collection -> ArrayList
现在,这些陈述是有效的:
的实例
Collection
可以使用该方法isEmpty()
。的实例
ArrayList
可以使用方法isEmpty()
和add()
。
现在这取决于您想对实例做什么。如果您需要添加新元素,请使用允许它的实现。如果没有,最好使用您真正需要的最小实现或对象。
示例:如果您需要从 DAO 返回的 List 的大小,请使用Collection
替代List
或其任何实现:
Collection collection = dao.getListFromDatabase();
int size = collection.size();
添加回答
举报