22. 给出下面的不完整的类代码
class Person {
String name, department;
int age;
public Person(String n){ name = n; }
public Person(String n, int a){
name = n;
age = a;
}
public Person(String n, String d, int a) {
//填入——————使Person(String n, int a)逻辑编译通过
department = d;
}
}
下面的哪些表达式可以加到构造方法中的注释处? ( C ) 为什么 D不可以?
A. Person(n,a);
B. this(Person(n,a));
C. this(n,a);
D. this(name,age); 作者: ztg 时间: 2015-12-29 22:01
本大神掐指一算,你是上海期的作者: 我有一个邮箱了 时间: 2015-12-29 22:17
构造方法接收的是参数是String n, String d, int a作者: 迷茫不堪的年纪 时间: 2015-12-29 22:37
引用, 其实你理解意思就可以,只是形参成那样了作者: 只缘遇你 时间: 2015-12-29 22:42
它填 什么可以 调用Person(String n, int a) 构造方法? D 答案不可以么?作者: 爱hao者 时间: 2015-12-29 22:52
参数列表内 变量名是 n 和 a ,当然要用n和a接收的数据给对象赋值作者: longllch 时间: 2015-12-30 13:08 本帖最后由 longllch 于 2015-12-30 13:15 编辑
D选项相当于this(this.name,this.age);构造方法一般是用来对其属性进行初始化操作的,而这句话的意思是:通过当前对象的字段值对类的属性name和age进行初始化操作,
但是当前对象的name和age也是不确定的值(在没有new Person()的时候),用不确定的值进行构造方法的初始化是不可行的.
此处我们需要this(n,a)传入一个确定的值,这时n和a通过传参传递进来的值是确定的.
如果非要使用,那么可将name和age设置为static,这样name和age就不会依赖对象而存在,只依赖类的加载而加载. 作者: 唐洪超 时间: 2015-12-30 15:11
你的成员变量不是String n, int a 在下面当然调用当前你n,a作者: 魏志林 时间: 2015-12-30 16:37
只缘遇你 发表于 2015-12-29 21:57
22. 给出下面的不完整的类代码
class Person {
String name, department;