我有一个java测试即将到来,这位java教授正试图与我决斗,因为我说我知道我的东西。
这个具体的问题是什么引起了大声咒骂的交流。
1. Suppose that c1 and c2 are reference variables of type Clock.
What is the effect of each of the following statements?
a. c1= new Clock();
Answer
a. It creates the object c1, and the instance variables hr, min,
and sec are initialized to 0.我的回答是,它用默认或非参数构造函数实例化时钟对象。但是,不,他的回答是,它将所有实例变量设置为0。
我的问题是你会怎么回答?我怎么会知道变量在那里?我问我的教授,他回答说:“如果我张贴代码,它会有3页长。”他就不能在第一行写上"int,min,sec“吗?!
发布于 2015-03-03 22:30:15
声明
c1 = new Clock();使用类时钟的no args构造函数创建类时钟的新实例,并将其分配给局部变量c1。如果不知道时钟的实现或它的无args构造函数的实现,就不可能知道实例c1在构造时的内部状态。成员变量可能是由构造函数或静态初始化设置的。我也不清楚。
我认为值得指出的是,如果没有看到时钟的实现,您就不知道Clock()是默认的、无args构造函数还是不接受args的已定义构造函数。
发布于 2015-03-03 22:33:32
有些人喜欢展示他们的“聪明”和受教育程度。也许(只是可能)那是你教授的案子。
查看c1= new Clock();语句,唯一可以说的是使用类Clock的非参数构造函数创建了一个新实例,并将对创建实例的引用分配给一个名为c1的变量,该变量必须是先前声明的(变量可能已经初始化了,也可能没有初始化)。实例化包括初始化类字段,如果定义了默认值,例如private int myField = 4711;,否则将使用原语的默认值(int的默认值为0s)。
如果不看到类实现,您就无法知道哪些字段是初始化的,以及如何初始化的。
Clock可以以不同的方式存储它的状态--这就是封装的意义所在。例如,它可以存储时间戳--自该时代以来的毫秒数。或者从一天开始。当然,它也可以存储hours+minutes+seconds,但是你不能知道,你不应该猜测任何东西。
自1.8以来,Java中也有Clock。也许你的教授是指这门课--我看不出来,因为我不知道背景。
https://stackoverflow.com/questions/28843025
复制相似问题