Java家庭作业帮助(通过实例参考访问静态成员)

Bit*_*ion 23 java instance static-members

这是我的作业问题:


为类"Clock"写一个类声明.它应该包含小时,分钟,秒(所有整数)的实例变量.它还应该有一个toString()方法,以下面显示的格式显示时间.写一个单独的"ClockDriver"类来a)创建一个时钟实例,b)设置时钟的小时,分​​钟和秒,以及c)使用getTime()显示时钟的时间.使用第36页的Dog类示例作为指南.示例输出如下所示:

时间是3:45:00

//如果你不能同时获得两个零,请不要担心

//第二个字段 这是格式化问题

//我们稍后会处理


这是我的Clock类:

class Clock  {

int hours;
int minutes;
int seconds;


public String toString() {

    String temp = ("");
    return temp.format("%02d:%02d:%02d", hours, minutes, seconds);

} //end method toString

public void getTime() {

    System.out.print("The time is " + toString());

} //end method getTime

} //end class Clock
Run Code Online (Sandbox Code Playgroud)

这是我的ClockDriver类:

public class ClockDriver {

    public static void main (String[] args) {

        Clock c = new Clock();
        c.hours = 4;
        c.minutes = 30;
        c.seconds = 00;
        c.getTime();

    } //end main

} //end class ClockDriver
Run Code Online (Sandbox Code Playgroud)

即使它编译得很好并且工作得很好,但我得到了我认为IDE的警告说我的

return temp.format("%02d:%02d:%02d", hours, minutes, seconds);
Run Code Online (Sandbox Code Playgroud)

line通过实例引用访问静态成员.具体来说,

temp.format
Run Code Online (Sandbox Code Playgroud)

位.

所以我的问题是:

1.)为什么不一定鼓励通过实例引用访问静态成员?

2.)有没有更好的方法将它放在一起,以便我不通过实例引用访问静态成员?

提前致谢!

rge*_*man 41

静态方法属于类本身,而不属于任何实例.虽然您可以static从类的实例调用方法,但您不必使用该类的实例,也不应该使用该类的实例.它可能会令人困惑,因为看起来这个方法不是static,即使它是static.

调用static方法的最好和最清晰的方法是使用类名本身而不是类的实例来调用方法:

return String.format("%02d:%02d:%02d", hours, minutes, seconds);
Run Code Online (Sandbox Code Playgroud)

而且你根本不需要temp实例.