我一直在查看一些代码,我想知道是否有人可以解释这是如何工作的,例如
public class DataTable {
}
然后它用于另一个类
public class UsingDatatable {
public DataTable checktables = null;
}
为什么这个其他类使用另一个类作为变量?
答案 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
类的实例(不是类本身)。