今天看编程思想时发现一个问题,书上说构造器虽然没有使用static声明,但是实际上是一个静态方法,如果说构造器是静态方法的话,那么为什么可以在里面使用this呢,this是依赖对象实例的,而static不依赖与对象实例,语法中也是说道,静态方法中不能使用this,求解啊??
你说的构造器和Java中类的构造函数不是同一个概念吧。
设计模式中有一种构造器模式,用于构建某个类实例,一般作为一个静态方法提供给客户端调用。
如果这本书说的正确的话,“构造器虽然没有使用static声明,但是实际上是一个静态方法”,这只是一种实际理解的比喻。你理解的static和this的用法是正确的。
应该是静态构造函数吧,你估计理解错了
构造函数是一个特别的函数,不能归为静态或者成员函数中任何一类。
不可能的,这个完全违背了面向对象的一些规则。
构造函数,是为了将一个类实例化一个对象才需要使用的,进行一些必备的初始化操作(即使你没写任何代码,实际上运行库也帮你添了很多操作)。何为静态,就是全局的,已经初始化过的,静态函数就是指该函数不和具体对象相关,只和类相关,但是构造函数是和对象直接关联的,这两个东西从面向对象的概念上完全不可能融合在一起。
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。而构造函数则需要在根据引用去到jvm里面创建一个对象。所以根本你说的根本不可能