【问题标题】:Private class wants variables, I want to put them in the constuctor instead私有类需要变量,我想把它们放在构造函数中
【发布时间】:2014-01-30 16:04:11
【问题描述】:

所以我在一个名为Generator. 的类中有这个私有方法Complex,它需要6 个变量,如下所示。问题是这些变量,至少widthheight 应该来自另一个名为GUI 的类。但这感觉很奇怪,我不知道如何将GUI 类中的width 放入Generator 类中的Complex 方法中,除非我在Generator 类中创建一个GUI 对象并且然后调用方法获取width。但我很确定那不是你应该做的。

如果将Complex 方法需要的所有这些变量都放入构造函数中会更有意义。那么这对我来说是有意义的,但事实并非如此。

private Complex[][] mesh(double minRe, double maxRe, double minIm,
     double maxIm, int width, int height){


        Complex[][] complex = new Complex[height][width];
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                complex[i][j] = new Complex (i, j);
            }
        }
        return complex;

    }

tldr:如何从另一个类中获取数字到这个私有方法中?

【问题讨论】:

    标签: constructor private


    【解决方案1】:

    您的术语混淆了。这些不是变量。这些是参数

    那不是私有类,它是私有方法

    如果GUI 是一个实际的类,并且有heightwidth 作为成员字段,那么最好将此mesh 方法放在同一个类中。然后它可以使用相同的字段,而不是将它们作为参数传递。

    如果只从GUI 调用mesh,则尤其如此。

    public class GUI {
        private int _width;
        private int _height;
    
        public GUI(int width, int height) {
            _width = width; _height = height;
        }
    
        private double Complex[][] mesh(double minRe, double maxRe, double minIm,
         double maxIm){
            // now you can use _width and _height
        }
    }
    

    如果您无法更改 GUI 类,那么您无能为力。 GUI 类是否具有宽度和高度属性?你甚至 GUI 类的实例吗?

    【讨论】:

    • 我们不允许更改 GUI,这是一个完成的课程。我所拥有的只是生成器类的规范(我要编写),它们是: /** 在窗口中绘制图片 gui / public void render(MandelbrotGUI gui); /* 创建一个矩阵,其中每个元素都是具有正确坐标的复数。*/ private Complex[][] mesh(double minRe, double maxRe, double minIm, double maxIm, int width, int height);
    猜你喜欢
    • 2011-02-04
    • 2023-04-09
    • 2011-09-27
    • 2021-10-15
    • 2011-03-18
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多