A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我见构造方法中有用的,但答案是不能,怎么理解呢

14 个回复

倒序浏览
this,和super不能同时放在构造方法中的第一行,必须取其一
回复 使用道具 举报
都必须放于第一行,你说能公用吗
回复 使用道具 举报
不能同时放在一个方法中哦
回复 使用道具 举报
应该是不能同时这样吧
this(变量)//或者super(变量);
你如果这样的话是完全可以的.
[AppleScript] 纯文本查看 复制代码
class Person
{
	String name;
	Person(String name)
	{
		this.name=name;
	}
	public void say()
	{
		System.out.println(name);
	}
}
class Student extends Person
{
	int age;
	Student(String name,int age)
	{
		super(name);
		this.age=age;
	}
	public void say()
	{
		System.out.println(name+" "+age);
	}

}
class Demo
{	
	public static void main(String[] args) 
	{
		Student s=new Student("小明",1);
		s.say();
	}
}
回复 使用道具 举报
super和this都是要放在第一行使用的,所以不能同时存在于一个构造方法中。
回复 使用道具 举报
super是可以访问父类的构造方法,但是必须放在子类构造方法的第一行  ..super和this可以放在同一个构造方法中的..
回复 使用道具 举报
不能    this和super只能放在构造方法的第一行   不能同时存在  你看错了
回复 使用道具 举报
super关键字和this关键字是可以同时存在于同一个构造方法中,super调用方法和this调用方法不能同时存在构造方法中,但是调用属性是可以 同时存在构造方法中的.
回复 使用道具 举报
泪雨星空 发表于 2016-7-26 23:55
super关键字和this关键字是可以同时存在于同一个构造方法中,super调用方法和this调用方法不能同时存在构造 ...

是否可以同时存在,主要要区分是调用的是方法还是属性;
回复 使用道具 举报
this()和super()不能同时在一个构造方法内
回复 使用道具 举报
可以的 super 调用父类的构造参数 this调用的是本类的成员时两者可以同构造函数。但是当super和this都是在调用构造函数时不能在一起使用,因为规定super  this调用构造函数必须在第一行
回复 使用道具 举报
调用构造方法的两个语句 不能同时用   但是 调用成员可以
回复 使用道具 举报
1.子类的所有构造函数都默认调用基类的无参构造函数super()。如果有this(),或者super(x),则默认消失。

2.当子类构造器第一句为super(...),意味着它调用了基类的含参构造器,默认的super()消失。如果它又调用了this(...),参考第1点,this(...)所指构造器内必定有super()、或者super(...)、或者this(...)。此时该构造器调用了一遍以上的基类构造器,肯定不行啊

3.当子类构造器中第一句为this(...)时,意味着它调用了该类的其他构造器,参考第1点,其他构造器内第一句默认super(),或者指定super(...),此时的调用顺序为:父类构造器,被调用子类构造器,当前构造器。很清晰的初始化顺序!
可能你会问,如果子类的其他构造器第一句都是this(...)怎么解?很抱歉,构造器之间不能循环调用,也不能调用自身,所有至少存在一个子类构造器的第一句为super(?)!这也是java保证我们优先初始化父类的策略。


回复 使用道具 举报
两者都必须放在第一行,所以只能选其一
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马