-2

相互作用する2つ以上のクラスを作成するにはどうすればよいですか?たとえば、最初のクラスのメソッドは、たとえばフィボナッチstatic数を生成し、2番目のクラスの別のメソッドは、最初のクラスのメソッドによって作成されたフィボナッチ数を使用して何かを実行します。クラス?

4

2 に答える 2

1

あなたは Java でコーディングを始めているようですので、修飾子に関するこのオラクルの記事は、クラスが他のクラスとどのように相互作用するかを理解するための良い出発点であると思います。

だからあなたの質問に答えるために:

では、互いに相互作用する2つ以上のクラスを作成するにはどうすればよいですか?

あるクラスが別のクラスと対話する方法はいくつかあります。あなたの特定の例により役立つとわかったものを選択したことに注意してください。それらの最も一般的なものは次のとおりです。

  • クラス Bar のインスタンスは、以下の例のように、クラス Foo の別のインスタンスからメソッドを呼び出します。

    Foo foo = new Foo()
    Bar bar = new Bar();
    
    bar.setSomeFieldValue(foo.getSomeOtherFieldValue());
    
  • Class Foo は Class Bar を拡張し、そのスーパー クラスで定義されたコンストラクトを呼び出します:これは、次の質問に答えようとします:

    Class Foo extends Bar
    {
        public Foo()
        {
            super(); //Calling the Bar Class construct
        }
    }
    
  • クラス Foo は、クラス Bar のインスタンスをメソッドの引数として期待します。

    import dir.barpackage.Bar;
    
    Class Foo
    {
        private int x;
    
        public Foo()
        {
            //Construct an Instance of the Foo object
        }
    
        public void doSomethingWithBar(Bar bar)
        {
            Foo.x = bar.getSomeBarPropertyValue();
        }
    }
    

あなたの質問をさらに進めます:

たとえば、最初のクラスのメソッドは静的で、たとえばフィボナッチ数を生成し、2 番目のクラスの別のメソッドは、最初のクラスのメソッドによって作成されたフィボナッチ数で何かを行います。

次の例は、これを行う1 つの方法です。

FirstClass.java

Class FirstClass
{
    private static int fibonnacciNumber; // This field is private to this class and thus can be only accessed by this class

    public static int getFibonnaciNumber() // A public method can be accessed any place other than your class
    {
        return FirstClass.fibonnacciNumber;
    }
}

SecondClass.java

Class SecondClass
{
    public void doSomethingWithFibonnacciNumber(int fibonnacciNumber)
    {
        //Will do something with your fibonnacci number;
    }
}

使用例

SecondClass second = new SecondClass();
second.doSomethingWithFibonnacciNumber(FirstClass.getFibonnacciNumber());

お役に立てば幸いです。乾杯。

于 2012-11-11T13:47:22.273 に答える
0

クラスを「拡張」する必要はありません。クラス2のメソッド内からクラス1内の(パブリック)静的メソッドを呼び出すだけです。それで全部です。

于 2012-11-11T13:24:00.440 に答える