首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对这些复习问题的回答

对这些复习问题的回答
EN

Stack Overflow用户
提问于 2015-03-03 22:15:48
回答 2查看 141关注 0票数 2

我有一个java测试即将到来,这位java教授正试图与我决斗,因为我说我知道我的东西。

这个具体的问题是什么引起了大声咒骂的交流。

代码语言:javascript
复制
    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“吗?!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-03 22:30:15

声明

代码语言:javascript
复制
c1 = new Clock();

使用类时钟的no args构造函数创建类时钟的新实例,并将其分配给局部变量c1。如果不知道时钟的实现或它的无args构造函数的实现,就不可能知道实例c1在构造时的内部状态。成员变量可能是由构造函数或静态初始化设置的。我也不清楚。

我认为值得指出的是,如果没有看到时钟的实现,您就不知道Clock()是默认的、无args构造函数还是不接受args的已定义构造函数。

票数 6
EN

Stack Overflow用户

发布于 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。也许你的教授是指这门课--我看不出来,因为我不知道背景。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28843025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档