类作为Java中的变量
我一直在看一些代码,我想知道是否有人可以解释这是如何工作的,例如类作为Java中的变量,java,class,variables,Java,Class,Variables,我一直在看一些代码,我想知道是否有人可以解释这是如何工作的,例如 public class DataTable { } 然后在另一个类中使用它 public class UsingDatatable { public DataTable checktables = null; } 为什么另一个类使用另一个类作为变量?这称为组合,旨在利用另一个类的字段和方法。 有关更多详细信息,请参阅 在计算机科学中,对象组合是一种将简单对象或数据类型组合成更复杂对象的方法。组合是许多基本数据结构的
public class DataTable {
}
然后在另一个类中使用它
public class UsingDatatable {
public DataTable checktables = null;
}
为什么另一个类使用另一个类作为变量?这称为组合,旨在利用另一个类的字段和方法。 有关更多详细信息,请参阅 在计算机科学中,对象组合是一种将简单对象或数据类型组合成更复杂对象的方法。组合是许多基本数据结构的关键构建块,包括标记联合、链表和二叉树,以及面向对象编程中使用的对象 例如:
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
的对象来使用它(尽管它似乎是一个空类,但实际上它总是包含有用的东西)。所有变量必须:
- 包含基元值,或
- 引用类的实例
在您的示例中,
checktables
引用了DataTable
类的一个实例(而不是类本身)。这是一个has-a关系,也称为组合。在本例中,UsingDatatable
有一个DataTable
。下面的示例将帮助您更好地理解这个概念
public class Address{
private String houseNo;
private String streetNo;
}
public class Person{
private Address address = null;
}
本例说明
人员
有一个地址
假设您的意思是为什么使用DataTable类可以创建DataTable类的实例,原因有很多
- 首先,DataTable可以访问该类。这可能是因为它们共享同一个包,或者使用DataTable“导入”DataTable类
- 其次,它可以实例化,因为它不是最终的。因此,每个实例(对象)都继承 实现的所有非静态属性可供以后使用
- 第三,即使不在其中创建构造函数,也可以从中构造对象,除非contsructor声明为private(Java编译器将默认创建公共构造函数)
- 第四,为什么DataTable对象在UsingDataTable中声明为字段取决于实现者。但是,在所有情况下,每个UsingDataTable对象都有自己的checktable字段副本