Java不同的引用类型和类对象

时间:2018-08-05 12:39:37

标签: java inheritance

如果A abc = new B()A类,B类具有继承关系,那么使用引用类型A而不是B有什么好处,如果使用了B?现在B的对象可以访问哪些方法(所有AB方法或其他方法)?同样,如果A和B都具有相同的方法,则B会覆盖它,但是如果它们具有不同的方法,则对象可以在此处访问其方法?

2 个答案:

答案 0 :(得分:1)

假设您有:

public class A {

    public void a(){

    }
}

public class B extends A{

    public void b(){

    }
}

您不能使用B b = new A();

您可以使用A a = new A();,在这里您可以访问a()方法。

您可以使用A a = new B();,在这里您可以访问a()方法。

您可以使用B b = new B();,在这里您可以访问两种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)。

答案 1 :(得分:0)

让我们以Java Collections API为例。为了简洁起见,请考虑以下层次结构:

Collection -> ArrayList

现在,这些语句有效:

  • Collection的实例可以使用方法isEmpty()
  • ArrayList的实例可以使用方法isEmpty()add()

现在,这取决于您要对实例执行的操作。如果需要添加新元素,请使用允许它的实现。如果没有,那么最好使用您真正需要的最少实现或对象。

示例:如果需要从DAO返回的列表大小,请使用Collection代替List或其任何实现:

Collection collection = dao.getListFromDatabase();
int size = collection.size();