2013-08-20 11 views
13

ここに私の宿題の質問です。時間、分、秒(すべての整数)のインスタンス変数を持つ必要があります。また、次のような形式で時刻を表示するtoString()メソッドも必要です。 a)時計のインスタンスを作成し、b)時計の時間、分、秒を設定し、c)getTime()を使用して時計の時刻を表示するための別の "ClockDriver"クラスを作成します。 36ページのDogクラスの例を参考にしてください。アウトサンプルは以下の通りである:のJava宿題ヘルプ

時間は午前3時45分○○秒

//であるあなたが

// 2番目のフィールドの両方でゼロを得ることができない場合は心配しないでください。それは我々がここで


は私の時計クラスで、後に対処します//書式設定の問題

です:

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 

そして、ここに私の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 

それはうまくコンパイルし、うまく動作しますが、私はIDEからの警告が私の

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

lineはインスタンス参照によって静的メンバーにアクセスしています。具体的には、

temp.format 

ビット。

だから私の質問は以下のとおりです。

1)はなぜ必ずしも奨励していないインスタンスの参照を経由して静的メンバにアクセスしていますか?

2.)私はインスタンス参照を介して静的メンバーにアクセスしていないようにこれをまとめる方が良いですか?

ありがとうございます!

+7

+1純粋にあなたのユーザー名です。 –

答えて

30

静的メソッドはクラス自体に属し、インスタンスには属しません。クラスのインスタンスからstaticメソッドを呼び出すことはできますが、クラスのインスタンスを使用する必要はありません。メソッドがstaticであってもstaticではないように見えるので、混乱する可能性があります。

staticメソッドを呼び出すための最良かつ最も明確な方法は、メソッドを呼び出すために、クラスのインスタンス、クラス名自体をない使用することです:

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

そして、あなたはtempインスタンスを必要としません。まったく。

+0

ありがとう、ありがとう!私は問題を抱えていて、私の先生は温度を使って自分のやり方でスニペットを投げました。私は彼が私にフォーマットの権利を得る方法を見つけ出すことを期待していなかったと思うので、それはうまくいかなかったのです。 –

0

実際には、文字列tempは使用しないでください。 String.formatと呼びます。あなたの質問に答えるには、電話が実際にtempを見ないので、混乱しています。

1

、機能を持っているvoid foo()、そしてあなたがそうのようなfooを呼び出すためにインスタンスcを使用して、特定のクラスのインスタンスであれば、cはそれを呼び出すことができますことを心に留めておいてください:

c.foo();

実際にどのような呼ばれる:

foo(c);

静的関数無効とfoo2()の呼び出し中:

Class.foo2();

と同様に呼び出されます。

インスタンスを使用して静的関数を呼び出すと、彼が何をしているのか分からない可能性があるユーザーが示されます。