首页 > 试题广场 >

在使用super和this关键字时,以下描述正确的是()

[单选题]
在使用superthis关键字时,以下描述正确的是()
  • 在子类构造方法中使用 super() 显示调用父类的构造方法,super() 必须写在子类构造方法的第一行,否则编译不通过
  • super() 和 this() 不一定要放在构造方法内第一行
  • this() 和 super() 可以同时出现在一个构造函数中
  • this() 和 super() 可以在static环境中使用,包括static方法和static语句块
推荐
答案选A 
使用super()或者this()方法是必须放在构造函数的第一行
由于this函数指向的构造函数默认有super()方法,所以规定this()和super()不能同时出现在一个构造函数中。
因为staic方法或者语句块没有实例时可以使用,而此时不需要构造实例,所以不能用this()和super()
编辑于 2017-03-19 20:25:34 回复(2)
选A
说一下super()和this()吧。
1. super(),this()和super,this关键字不是一个概念,前者是在构造器之间相互调用的语法,后者是代之父类或者本类的对象。
2. 每个构造器默认的第一行都是super(),但是有的时候直接父类的没有无参构造,那么就必须在子类构造的第一行显式的声明要调用哪个构造器。
3. this()和super()都必须出现在构造器的第一行,所以两者不可能出现在同一个构造器中
4. this和super都不能出现了静态方法、静态块中。
发表于 2018-07-13 11:11:54 回复(0)

A

super()和this()都是调用一个构造方法,都必须出现在第一行,static下不存在对象-所以不存在this与super的说法

发表于 2017-04-03 17:10:45 回复(0)
this 和 super 必须写在第一行,两者不能同时出现!
发表于 2017-03-23 10:26:08 回复(0)
this 和 super关键字可以同时出现在实例方法中,这时也不要求它们都在第一个位置。 但是,this()和supet()只能出现在类的构造函数中,不能同时出现,且位置都必须在第一个。
发表于 2017-09-02 11:15:56 回复(0)
为什么要放置在第一行?
1、super()防止子类后面调用父类属性,在第一行初始化父类;
2、this()其自带调用super(),出现第一行,保证父类初始化的唯一性,不然会多次重复初始化
发表于 2017-10-11 16:45:49 回复(0)
super和this的异同:
1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名    super.成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错
6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
7)super()和this()均需放在构造方法内第一行。
8)尽管可以用this调用一个构造器,但却不能调用两个。
9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
发表于 2019-04-26 11:49:56 回复(0)
static方法中无法使用this关键字,且this()方法只能在构造器中使用
发表于 2017-09-20 16:32:50 回复(0)
这样子的吗?
发表于 2019-09-05 00:15:37 回复(0)
C对啊,封装的时候我就见过
发表于 2019-08-15 23:42:37 回复(0)
子类若使用super()显示地调用父类的构造方法,则必须写在子类构造方法的第一行
发表于 2019-07-13 20:38:16 回复(0)

关于c,this和super都规定要放在第一行,所以不能同时存在,而且this调用构造器时,那个构造器第一句也会调用super,如果this和super放在同一处,就会出现父类重复初始化的情况,这是不被允许的

发表于 2019-04-11 15:17:47 回复(0)
答案选A  使用super()或者this()方法是必须放在构造函数的第一行 由于this函数指向的构造函数默认有super()方法,所以规定this()和super()不能同时出现在一个构造函数中。 因为staic方法或者语句块没有实例时可以使用,而此时不需要构造实例,所以不能用this()和super()
发表于 2019-04-07 16:11:51 回复(0)

super()必须写在子类构造器的第一行,否则编译无法通过

发表于 2019-03-01 00:15:26 回复(0)
D 选项 this()与super()是创建对象时,对对象进行初始化的,而static方法与静态代码块,随着类的加载而加载先于对象的创建。
发表于 2019-01-31 07:24:01 回复(0)
public class A { A(){  //这是子类构造器的第一行 super(); }
}

应该说放子类构造器的可执行代码的第一行吧。。
编辑于 2018-12-28 10:30:53 回复(0)
  • super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 
  • this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
  • this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
  • this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
发表于 2018-11-14 22:20:59 回复(0)
如果有注释怎么办,注释不能放在它俩之前吗?
发表于 2018-11-08 13:03:10 回复(0)
this函数指向的构造函数默认有super()方法
发表于 2018-08-20 09:47:06 回复(0)
从博客里看到的 this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过
发表于 2018-08-11 09:15:13 回复(0)