如何创建两个或多个相互交互的类?

时间:2012-11-11 13:18:26

标签: java static-methods

如何创建两个或多个相互交互的类? 例如,第一个类中的方法将是static,例如产生 Fibonacci 数字,第二个类中的另一个方法将使用 Fibonacci 由第一堂课中的方法创建的数字,以及如何扩展我的课程?

2 个答案:

答案 0 :(得分:1)

由于您似乎开始使用java编写代码,我认为关于this oracle articleModifiers是理解一个类如何与另一个进行交互的良好开端。

所以回答你的问题:

  

那么我如何制作2个或更多相互交互的课程呢?

一个类有几种方法可以与另一个类进行交互。请注意,我已经选择了我发现对您的特定示例更有用的那些。其中最常见的是

  • Class 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
        }
    }
    
  • Class Foo期望Class 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();
        }
    }
    

进一步探讨你的问题:

  

例如,第一个类中的方法将是静态的,例如产生斐波纳契数,而第二个类中的另一个方法将使用由第一类中的方法创建的斐波那契数来做某事

以下示例是一种执行此操作的方式:

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());

我希望它有所帮助。干杯。

答案 1 :(得分:0)

您不必“扩展”这些类。只需在第二类的方法中调用第一类中的(公共)静态方法。就这样。