java - 静态-非静态交互

标签 java oop static

我有两个类相互交互。第一个是中心的,如下:

public class Datenbank {
double winkelPanel = 0;
double groessePanel = 0;
double effizienzPanel = 0;
double maxProduktion = 0;

在这里我初始化我的变量并给它们赋值。稍后在同一个类中,有函数addPanel:

public void addPanel(double richtung, double winkel, double groesse, 
                                    double effizienz, double maxProd) {     
    groessePanel += groesse;                                                
    if (richtPanel == 0){ richtPanel += richtung/100; }                         
    else { richtPanel += richtung/100; richtPanel /= 2; }                        

    if (winkelPanel == 0){ winkelPanel = winkel; }
    else { winkelPanel += winkel; winkelPanel /= 2; }  

    if(effizienzPanel == 0) { effizienzPanel = effizienz/100; }
    else {effizienzPanel += effizienz/100; effizienzPanel /= 2; }

    if(maxProduktion == 0) { maxProduktion = maxProd; }
    else {maxProduktion += maxProd; maxProduktion /= 2;}

这本身就很好(据我所知)。现在有另一个类,来自与之交互的 GUI。

if(menuItem == mPanelHinzufuegen) {
        double Flaeche = Double.parseDouble(showInput("Fläche des Panels in m^2:"));
        double Richtung = Double.parseDouble(showInput("Richtung des Panels(S = 0, W = 90, 0 = -90):"));
        double winkel = Double.parseDouble(showInput("Winkel des Panels in Grad, z.B. 23.5:"));
        double effizienz = Double.parseDouble(showInput("Effizienz des Panels, z.B. 23.5:"));
        double maxProd = Double.parseDouble(showInput("Max. Produktion des Panels in Watt:"));

        Datenbank.addPanel(Richtung, winkel, Flaeche, effizienz, maxProd);

    }

当我开始调用 Datenbank.addPanel 时,我收到编译器错误,因为 GUI 是静态的,而 Datenbank 不是。简单地向 addPanel 方法添加“static”是行不通的,因为变量(winkelPanel 等)开始抛出一个错误,指出它们不是静态的,因此不能那样使用。

最佳答案

为什么要把它变成静态的?

Datenbank db = new Datenbank();
db.addPanel(Richtung, winkel, Flaeche, effizienz, maxProd);

关于java - 静态-非静态交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34175075/

相关文章:

java - 如何在 Mac OS X 上以 32 位模式运行绑定(bind)到 .app 的 java 应用程序?

windows - Qt 静态链接和部署

c++ - 为什么不构造内部类? C++

java - 依赖管理和构建管理工具有什么区别?

javascript - 坚持根据来自restFul API的数据实现自动完成

java - 如何从(默认包)访问包中的非静态类字段?

java - 抽象类的代理,不改变用法

c - 多态性(在 C 中)

php - "public static"还是 "static public"?

java - 类中同一类的静态对象作为其数据成员有什么用?