【问题标题】:How to create 2 or more classes that interact with each other? [closed]如何创建 2 个或多个相互交互的类? [关闭]
【发布时间】:2012-11-11 13:18:26
【问题描述】:

如何创建两个或多个相互交互的类? 例如,第一个类中的一个方法将是static,例如生成一个 Fibonacci 数,而第二个类中的另一个方法将对 Fibonacci 数做一些事情它是由第一类中的方法创建的,我如何扩展我的类?

【问题讨论】:

  • 好吧,一切都很好,但是为什么要在这种情况下扩展类呢?
  • 你的问题有点像“我如何用 C++ 编程”,因此对 SO 不是很好。标准回答:你试过什么?您当前的代码有什么错误?

标签: java static-methods


【解决方案1】:

由于您似乎开始使用 java 编码,我想说this oracle article about Modifiers 是了解一个类如何与另一个类交互的良好开端。

所以回答你的问题:

那么我如何创建 2 个或多个相互交互的类?

一个班级与另一个班级有多种互动方式。请注意,我选择了对您的特定示例更有用的那些。其中最常见的是

  • 类 Bar 的实例从另一个类 Foo 实例调用方法,如下例所示:

    Foo foo = new Foo()
    Bar bar = new Bar();
    
    bar.setSomeFieldValue(foo.getSomeOtherFieldValue());
    
  • Class Foo 扩展 Class Bar 并调用定义在它的超类上的构造:这试图回答您的问题:如何扩展 Class

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

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

【讨论】:

  • 如果答案正确,请标记为正确。否则 Stackoverflow 永远不会知道你的问题已经解决了。考虑对有帮助的答案进行投票,这样其他有类似问题的用户可以更轻松地找到答案。
【解决方案2】:

您不必“扩展”课程。只需从类 2 的方法中调用类 1 中的(公共)静态方法。就这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多