public class A extends B{
public A(){
super(2,3);
this(3,4);
}
public A(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
public static void main(String[] args) {
A a = new Test();
}
}
class B{
public B(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
}请问大神这个是怎么回事?在线等,谢谢
public A(){
super(2,3);
this(3,4);
}
public A(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
public static void main(String[] args) {
A a = new Test();
}
}
class B{
public B(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
}请问大神这个是怎么回事?在线等,谢谢
解决方案 »
- 请教鼠标点击事件的调用次数问题
- 第一个JDBC程序就无法运行啊,求助……
- 大侠救命啊
- java 如何实现C 进程间的通信.(IPC 和 SYSTEM V IPC) 谢谢.大家给个建议
- java实现队列,帮忙看下
- java 程序的安全性问题。
- 关于windows的问题.(JAVA如何关闭一个windows进程,如何修改windows设置)
- sqlserver的text字段如何读取 用jdbc
- java1.5中,使用import语句,什么时候需要加入 static?
- 奇怪,我每次运行java socket程序时,比如服务器端的SOCKET程序编译通过了,可就是在用java 服务器程序 这个命令运行它时,老是一个光标
- 用mina通过VPN传数据时,碰到java.nio.channels.NotYetConnectedException,求思路!!
- 关于Thread类,为什么Thread没有实例化就可以执行Thread.sleep(10000);
this 调用自己的构造方法
this(),也要放在构造方法中的第一行,编译出错
可以this();
super.xx();调用不是构造方法的方法就可以了
this(),也要放在构造方法中的第一行,编译出错
就是把super 或者this放在第一行,你的代码还想也不能正常编译吧
this(),也要放在构造方法中的第一行,编译出错
就是把super 或者this放在第一行,你的代码还想也不能正常编译吧
就是啊,这里就遇到一个问题,子类的构造方法,要调用父类的构造方法和自身的构造方法,此时,super()和this()的问题
this(),也要放在构造方法中的第一行,编译出错
就是把super 或者this放在第一行,你的代码还想也不能正常编译吧
就是啊,这里就遇到一个问题,子类的构造方法,要调用父类的构造方法和自身的构造方法,此时,super()和this()的问题
代码修改一下吧
public class A extends B{
public A(){
this(3,4);
}
public A(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
public static void main(String[] args) {
A a = new Test();
}
}
class B{
public B(){}
public B(int a,int b){
int sum = a + b;
System.out.println("a + b = "+sum);
}
}
在看看楼上给你的解释
使用this(当然调用重载构造函数里面可以再调用this),但最终肯定有一个重载的构造函数会用super调用父类的构造函数,所以:
1 如果有构造函数里有this, 那你后面不再需要super语句了。
2 如果你用了super 语句了,后面再用this,重载的构造方法还会调用super,这样也不应该了。
http://wenwen.soso.com/z/q191435823.htm
public A(){
}
}class B extends A {
public B() {
// doSomething();
this(1);
} public B(int a) {
super();
} void doSomething() { /*...*/ }
}
假设this()不要求在第一行,那么上面这个函数就违背了super()必须在第一行的原则(去掉注释掉的doSomething()之后)。这就是为什么this()和super()都必须要在第一行的原因。