class作为Java中的变量

时间:2014-04-16 16:33:59

标签: java class variables

我一直在查看一些代码,我想知道是否有人可以解释这是如何工作的,例如

public class DataTable {

}

然后它用于另一个类

public class UsingDatatable {
    public DataTable checktables = null;
}

为什么这个其他类使用另一个类作为变量?

4 个答案:

答案 0 :(得分:1)

这是 has-a 关系,也称为合成。在此示例中,UsingDatatable有一个DataTable。以下示例将帮助您更好地理解该概念。

public class Address{
    private String houseNo;
    private String streetNo;
}

public class Person{
    private Address address = null;
}

此示例表明Person有一个Address

答案 1 :(得分:1)

假设你的意思是为什么UsingDataTable类可以创建DataTable类的实例,原因有很多。

  • 首先,DataTable可以访问该类。可能是因为他们共享相同的包或者使用DataTable'导入'DataTable类。

  • 其次,它可以实例化,因为它不是最终的。因此,每个实例(对象)都继承 实现的所有非静态属性,可供以后使用。

  • 第三,即使你没有在其中创建构造函数,也可以从中构造对象,除非将contsructor声明为私有(Java编译器默认会创建一个公共构造函数)。

  • 第四,为什么在UsingDataTable中将DataTable对象声明为字段取决于实现者。但是,在所有情况下,每个UsingDataTable对象都有自己的可检查字段副本。

答案 2 :(得分:0)

这称为组合,旨在利用其他类的字段和方法。 有关详细信息,请查看this

  

在计算机科学中,对象组合是一种将简单对象或数据类型组合成更复杂对象的方法。组合是许多基本数据结构的关键构建块,包括标记联合,链表和二叉树,以及面向对象编程中使用的对象。

例如:

public class Main {
    void aMethod(int a) {
        Useful u = new Useful();
        int c = u.usefulMethod(Useful.MYCONST, a);
    }
}

class Useful {
    public final static int MYCONST = 10;
    public int usefulMethod(int i, int j) {
        return i * j;
    }
}

为了更具体地说明你的问题(这似乎是对象组合概念的一个例子),UsingDatatable正在创建一个Datatable的对象来使用它(但它似乎是一个空类,但实际上它总是包含有用的东西。)

答案 3 :(得分:0)

所有变量必须:

  • 包含原始值,或
  • 引用类的实例。

在您的示例中,checktables引用了DataTable类的实例(不是类本身)。