黑马程序员技术交流社区

标题: 面对对象 考试题 不懂 求大神指教 [打印本页]

作者: 只缘遇你    时间: 2015-12-29 21:57
标题: 面对对象 考试题 不懂 求大神指教
本帖最后由 只缘遇你 于 2015-12-29 22:21 编辑

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
我有一个邮箱了 发表于 2015-12-29 22:17
构造方法接收的是参数是String n, String d, int a

它填 什么可以  调用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;

因为传入的参数名字是,n,a,而不是name.age
作者: 路路路路灯亮了    时间: 2015-12-30 19:15
这个好坑
作者: fengfeng520    时间: 2015-12-30 19:40
我刚学面向对象  不懂  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2