class SrInherit1
{
int x,y;
SrInherit1(int a,int b)
{
x=a;y=b;
}
}
class SrInherit2 extends SrInherit1
{
SrInherit2(int a,int b)
{
super(a,b); //这里我的理解,super不用,父类的构造应该自动被继承才对!!
}
}
public class SrInherit
{
public static void main(String args[])
{
int sum;
SrInherit2 Srv=new SrInherit2(40,80);
sum=Srv.x+Srv.y;
System.out.println("Sum="+sum);
}
}
{
int x,y;
SrInherit1(int a,int b)
{
x=a;y=b;
}
}
class SrInherit2 extends SrInherit1
{
SrInherit2(int a,int b)
{
super(a,b); //这里我的理解,super不用,父类的构造应该自动被继承才对!!
}
}
public class SrInherit
{
public static void main(String args[])
{
int sum;
SrInherit2 Srv=new SrInherit2(40,80);
sum=Srv.x+Srv.y;
System.out.println("Sum="+sum);
}
}
解决方案 »
- 冒泡排序的结束条件是什么
- 为什么答案是:the result is undefined,我觉得答案应该是1:
- 关于继承中构造函数的调用!很奇怪,高人来指点!!
- 我做了一个applet之间通讯的程序,出现错误,请帮忙!!!
- 请问谁有JCreator的序列号?
- dom4j解析求助
- 是不是所有的操作系统平台上都支持iso_8859_1字符集?
- 一个在集成环境中的classpath设置问题?用过jcreator的人帮帮我,
- @@@@@@ java程序员passport大调查!@@@@@@@
- 在二维数组中随机产生一个坐标
- JPasswordField小问题,大奥秘,请高手解释!
- swt中List有没有办法设置两列数据?
楼主【sure2003】截止到2008-06-26 09:39:51的历史汇总数据(不包括此帖):
发帖数:182 发帖分:8656
结贴数:180 结贴分:8606
未结数:2 未结分:50
结贴率:98.90 % 结分率:99.42 %
值得尊敬
java在实例化子类的时候,会自动调用父类的默认构造函数来构造但是现在你的父类是一个带参数的构造函数,java无法调用这个带参数的构造函数,
那么,就必须在子类里显式地调用
super()
super(参数)
有什么区别??
当你不写spuer(a,b);时默认调用的是父类无参的构造
补充一点,构造函数是不能继承的,默认的super()可以不写,但是如果你父类没有这个无参构造函数的话就会报错。所以一般需要显示调用。你理解super其实就是代表父对象就好了。
当写super(参);调的时父类有参 应该能懂了吧
class SrInherit1
{
/*SrInherit1()
{
}*/
}
class SrInherit2 extends SrInherit1
{
/*SrInherit2()
{
super(); //隐含的
}*/
}
//你要是建个类 不写构造函数的话 里面应该都隐含无参的默认构造函数 注释里面的都为无参的默认构造函数
如:
public class Test {
Test(int a,int b){}
public static void main(String [] args){
new Test();
}
}
系统一定会报错,但如果你把Test(int a,int b){}注释掉的话就不会报错了。
另外,构造方法不能被继承。
是自动继承没错,不过要是继承的话没有参数怎么办呢,就靠super(a,b)传给父类
2. 一旦你给你的类写了个构造方法,哪怕它不是 public 无参的,编译器都不会再帮你加构造方法了。
3. 所以你写的类不一定都有公有无参的构造方法。