关于this和super的问题~! 我知道在一个构造器中用this可以调用这个类中另一个构造器,也可以用super显示调用父类的构造器,但这都要写在构造器的第一行,如果我想要同时实现这两个功能怎么办? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this要写在重载构造方法体内的第一句,super不一定要放在第一句把, 我是说用super显示调用父类构造器 不好意思我这说的super不一定要放在第一句把,是指的类的一般方法构造器必须的放在第一句 super一定要放在第一句,this就不一定了,随时都可以引用,this是对类本身说的,super是针对父类说的 如果我想要同时实现这两个功能怎么办?答:我觉得可以在类中添加额外的方法,用来实现this(option)同样的功能 一中方法:在被调用的构造器中写super可以实现 class A{int i;String s;A(int ii){i=ii;}A(String ss){s=ss;}A(int ii,String ss){this(ii);this.s=ss;}}class B extends A{int I;String S;B(int ii){super(ii);I=ii;}B(String ss){super(ss);S=ss;}B(int ii,String ss){方法1: super(ii,ss); this.I=ii; this.S=ss;方法2: super(ss); this(ii); this.S=ss; }}不知这样行么,能通过编译。方法2中,原想把super(ss)放在中间,可是不行。错误提示为:对supper的调用必须是构造函数的第一个语句========================================================================================================本人初学Java,请多多指教,如有错请谅解 不好意思上面的方法2好像错了我再搞搞哦//方法2:super(ss); this(ii);this.S=ss;这样也不行,错误提示:对this的调用必须是构造函数的第一个语句。呵呵明白了,不管是this还是super,只要调用了父类或子类的构造函数,它就得在本构造函数的第一句。那就来这种方法吧://方法2: this(ii);super.s=ss;this.S=ss; 因为在类实例化时,父类一定要比子类先实例话。如果 super在子类的构造器中不是第一句那么 就表示子类已经实例化了一部分。所一spuer() 在调用父类构造器的时候一定放到第一句。如果是调用方法 ,如: super.f() ; this.f(); 这些 super或 this的含义就不同了。 这里的 this 和 super 只是一个引用 。 this 表示当前, super表示父类。 答:1)当你调用this(...)时,这个构造器中第一条语句必定是(super(...)或另一个this(...))。若都不是,则编译程序自动创建一个super()2)不知楼主为何有这个要求。同时放这两条是不可能的。只能按照上边第一点来安排JAVA的super(...)或this(...)语句.以上仅供你参考 super一定要放在第一句,this就不一定了,随时都可以引用,this是对类本身说的,super是针对父类说的 有一个关于Runtime的问题 急!谢谢大家的帮助。 如何在jframe上的某个panel上显示图片? 关于Resourcebundle的问题,谢谢!!!!!!! 有什么办法可以禁止JTable 的shift键的多选?或者disable shift 键? 文件的读取问题,急问! 麻烦高手帮忙看一下 在java中,如何产生一个唯一的标识?(就象GUID一样) win2000下安装jdk1.4.0? 谁给我解释一下:Email口令验证是指什么? Jbuilder6的注册码 【问题】java与orcle的关系是?若要使用orcle是不是先要学会java? 怎么读取不在默认目录下的文件
我这说的super不一定要放在第一句把,是指的类的一般方法
构造器必须的放在第一句
答:我觉得可以在类中添加额外的方法,用来实现this(option)同样的功能
可以实现
int i;
String s;
A(int ii){
i=ii;
}
A(String ss){
s=ss;
}
A(int ii,String ss){
this(ii);
this.s=ss;
}
}class B extends A{
int I;
String S;
B(int ii){
super(ii);
I=ii;
}
B(String ss){
super(ss);
S=ss;
}
B(int ii,String ss){
方法1: super(ii,ss);
this.I=ii;
this.S=ss;方法2: super(ss);
this(ii);
this.S=ss;
}
}不知这样行么,能通过编译。
方法2中,原想把super(ss)放在中间,可是不行。错误提示为:对supper的调用必须是构造函数的第一个语句
========================================================================================================
本人初学Java,请多多指教,如有错请谅解
上面的方法2好像错了
我再搞搞
哦//方法2:
super(ss);
this(ii);
this.S=ss;
这样也不行,错误提示:对this的调用必须是构造函数的第一个语句。呵呵
明白了,不管是this还是super,只要调用了父类或子类的构造函数,它就得在本构造函数的第一句。那就来这种方法吧://方法2:
this(ii);
super.s=ss;
this.S=ss;
如果 super在子类的构造器中不是第一句那么 就表示子类已经实例化了
一部分。所一spuer() 在调用父类构造器的时候一定放到第一句。
如果是调用方法 ,如: super.f() ; this.f(); 这些 super或 this的含义
就不同了。 这里的 this 和 super 只是一个引用 。 this 表示当前, super表示父类。
1)当你调用this(...)时,这个构造器中第一条语句必定是(super(...)或另一个this(...))。若都不是,则编译程序自动创建一个super()
2)不知楼主为何有这个要求。同时放这两条是不可能的。只能按照上边第一点来安排JAVA的super(...)或this(...)语句.以上仅供你参考