JAVA一个类有两个构造函数,当在一个构造函数中调用另外一个构造函数时为什么要用this.()而不能用类名.()

class Test{
int i;
Test(){ i = 0; }
Test(int i){ this.();}
}
我的意思是此处第二个构构造函数调用第一个构造函数时为什么必须用this.()而不能用Test.()
打错了
是this() 和 类名()
多打了一点

this()这个能表示是当前对象的构造方法,不会弄两个对象出来。this有个作用就是表示自己类的对象。所以除非想弄两个对象,否则构造掉构造就要加this。操作方法如下:

1、首先,先写一个完整数据,这是一个最原始的构造方法,如图。

2、访问修饰符,访问权限修饰符对构造方法的重载不影响。所以不是构成不同构造方法的必要条件。

3、排除了访问修饰符之后,由于构造方法没有返回值,接下来唯一可以区别的就是参数了。

4、参数类型相同,都为整数类型,编译无法通过。

5、最后还有因参数个数不同而造成的重载,可以参看下图。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-29
构造方法是在产生对象时被java系统自动调用的,我们不能在程序中像调用其他方法一样去调用构造方法(必须通过关键词new自动调用它)。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。例如:
public class Person{
String name;
int age;
public Person(String name){
this.name = name;
}
public Person(String name,int age){
this(name);
this.age = age;
}
}本回答被提问者采纳
第2个回答  2009-03-12
如果你要用Test.(),必须先实例化,Test test=new Test();然后test.Test();
第3个回答  2009-03-19
this.()这后面没点的吧。
this()这个能表示是当前对象的构造方法,不会弄两个对象出来啊。Test()这么搞那就肯定两个对象出来了。
this有个作用就是表示自己类的对象。所以除非你想弄两个对象,否则构造掉构造就要加this.
第4个回答  2009-03-12
用this可使人容易理解,如果用Test()会感觉很别扭的!
这只是语法规定,研究这个意义不大。

JAVA一个类有两个构造函数,当在一个构造函数中调用另外一个构造函数时...
this()这个能表示是当前对象的构造方法,不会弄两个对象出来。this有个作用就是表示自己类的对象。所以除非想弄两个对象,否则构造掉构造就要加this。操作方法如下:1、首先,先写一个完整数据,这是一个最原始的构造方法,如图。2、访问修饰符,访问权限修饰符对构造方法的重载不影响。所以不是构成不...

Java一个类中如果有多个构造器,那么调用那个?
public class xxx{public xxx(){}public xxx(String a){}public xxx (String a,String b){}}调用:xxx a=new xxx();\/\/调用的为第一个构造函数xxx b=new xxx("a");\/\/调用的为第二个构造函数xxx c=new xxx("a","b");\/\/调用的为第三个构造函数 ...

Java一个类中如果有多个构造器,那么调用那个?
} public Test005(String name, String pwd){logger.info("我是构造方法③"); } public static void main(String[] args) {Test005 t5 = new Test005();t5 = new Test005("name");t5 = new Test005("name","pwd"); }}运行结果如下:...

关于java编程的问题:一个类调用另一个类中构造方法中所定义的参数。
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值 总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载 构造函数与其他方法的区别 1.构造函数的命名必须和类名完全相同;...

java中同一个包内一个类调用另一个类中构造函数的问题
试运行过,在eclipse下正常,在dos下,如楼上说的,要带包名执行,能正常编译:javac -d . UserUtil.java。(此时,UserUtil.class会在bean文件夹里)但更难的问题没有解决:java UserUtil 执行时,出错,因为此时程序要加载mysql的驱动jar包,但dos下找不到。。。网上搜索过,没有找到能在dos下...

java中,一个类只能有一个构造器吗
就可以选择第二个构造函数,比如:Test t = new Test("jinjin","123456");当然了,你还可以在构造器里面加入一些商业逻辑,以便在一构造这个类出来的时候,就做一些你想让他做的事情 new Test(),就是在调用你的无参数的,Test类的构造函数 ...

为什么在构造函数中第一条语句调用本类的其他构造函数
AB* p[2]由于只声明了指针,没有调用构造函数,指针在使用new的时候调用构造函数。include <stdio.h> include <tchar.h> class AB { public:AB(int a = 0){ _tprintf(_T("Constructor!\\n"));m_var = a;} protected:int m_var;};int _tmain(int argc, _TCHAR* argv[]){ AB a(4...

java同一个包中两个类之间的构造函数无法调用
表示*.class应该在文件夹bean里面,因此,在dos中:javac DBConnect.java 然后在DBConnect.java所在目录中新建一个bean文件夹,并把DBConnect.class文件剪切到这个bean文件夹里,接下来javac UserConnect.java 这时,就不会报异常了 要运行UserConect,同样要把UserConect.class剪切到刚刚新建的那个...

java类中定义构造函数时定义了一个有参数的构造函数 ,是否必须定义空参 ...
不用了,因为你自己定义了有参的构造函数以后,其实已经调用了无参的构造函数(其实你自己写的构造函数会默认调用this();方法,只不过写不写都一样,不信你在你的有参构造的第一句,必须第一句,写this();试试),自己定义了有参构造函数以后,就必须用有参构造函数来初始化了,这个你懂得 ...

为什么有些类有2个构造函数?
构造函数重载啊。他们的参数列表不同(甚至可以仅仅是类型上的不同),比如数目不同,通常有一个是没有任何参数的构造函数。一个类的构造函数可以有无数个,只要他们的参数列表不同。如:void object()void object(int b)void object(double c)...

相似回答