当前位置: 首页 > 知识库问答 >
问题:

从另一个类中的另一个方法调用非静态方法

虞俊美
2023-03-14

我创建了两个类:PayPayCheckCalculator。下面是进行计算的方法:

public class Pay {   
    private double hoursWorked;
    private double rateOfPay;
    private double withRate;
    private double grossPay;
    private double netPay;

    public Pay ()
    {
        withRate = 15;
        rateOfPay = 5.85;
    }

    public void computeNetPay(double hours, double ratePay, double rateWith)
    {
        grossPay = hours * ratePay;
        double newAmt = grossPay*rateWith/100;
        netPay = grossPay - newAmt;       
    }

    public void computeNetPay(double hours, double ratePay)
    { 
        grossPay = hours * ratePay;
        double newAmt = grossPay*withRate/100;
        netPay = grossPay - newAmt;       

    }

    public void computeNetPay(double hours)
    {
        grossPay = hours * rateOfPay;
        double newAmt = grossPay*withRate/100;
        netPay = grossPay - newAmt;        
    }       
}

这里是一个调用并显示结果的函数,不幸的是,我无法根据这本书要求它运行的方式来运行它。

public class PayCheckCalculator {
    public static void main(String[] args) {

        Pay employee1 = new Pay(37.00, 12.00, 15.00);
        Pay employee2 = new Pay (25.00, 11.00);
        Pay employee3 = new Pay (15.00);
        display(employee1);
        display(employee2);
        display(employee3);
    }

    public static void display (Pay paycheck)
    {
         System.out.println("Employee pay is" + Pay.computeNetPay);
    }
}

任何提示都会帮助我在我的再教育过程中。

共有1个答案

韶镜
2023-03-14

您需要一个对象的实例才能从中调用一个方法,除非该方法声明为静态的。如上所述,您可以调用:

PayCheck.ComputeNetPay(您需要的任何参数)

这将从传递给display方法的类paycheck中调用方法。
如果要首先创建对象,则不需要将该方法声明为静态的,可以这样调用:

P1.ComputeNetPay(无论您需要什么参数)

其中p1是类pay的实例。由于这里类的对象实例名为paycheck,所以这是您调用(不必要的)静态方法的对象。
同样当您编写payemployee1=new Pay(37.00,12.00,15.00)时;这看起来像一个构造函数,您不应该将它用作构造函数。构造函数是用来创建类的实例的,这里看起来就像是试图将参数从方法传递到构造函数中,并且只有值,没有类型。

您为pay类定义的唯一构造函数不接受任何参数,因此当您想要创建对象时,您不能向它传递任何参数。

下面是构造函数如何工作的一个很好的解释。

这将使您从正确的方向开始,对其他方法使用相同的方法,但使用更多的参数。

  public class Employee {

     // These should be public unless you have getters and setters  
     public double hoursWorked;
     public double rateOfPay;
     public double withRate;
     public double grossPay;
     public double netPay;

     public Employee()
     {
         withRate = 15;
         rateOfPay = 5.85;
     }

     // Return the double netPay from this method
     public double computeNetPay(double hours)
     {
         grossPay = hours * rateOfPay;
         double newAmt = grossPay*withRate/100;
         netPay = grossPay - newAmt;        
         return netPay;
     }       

     public static void main(String []args){
        Employee Ben = new Employee();
        System.out.println("Ben gets paid " + Ben.computeNetPay(8.0));
       }
     }
 类似资料:
  • 问题内容: 我最近从使用PHP切换到Java,并进行了查询。想强调一下我是Java的初学者。 本质上,我正在使用文件A(具有类A),并且想要引用保存在文件B(类B)中的静态方法。使用A类时是否需要参考文件B?(我正在考虑使用PHP中的require_once)我在A类中的代码如下: Eclipse无法将B识别为类。我是否需要创建B的实例才能访问静态方法。觉得我真的忽略了某些东西,希望您能提出任何建

  • 我想在另一个类中使用那个擦除方法,但由于它看起来不是静态的,所以我不能这样做 那么我如何访问那个方法呢?

  • 问题内容: 在Python中,有没有一种方法可以从另一个类中调用一个类方法?我正在尝试在Python中旋转自己的MVC框架,但无法弄清楚如何从另一个类的一个类调用方法。 这是我想发生的事情: 我正在从PHP慢慢进入Python,因此我正在寻找与PHP等效的Python 。 问题答案: 更新:刚刚在您的帖子中看到了对它的引用。那不一样。用于获取函数对象,然后使用您的参数调用它 现在是一个实际的函数对

  • 问题内容: 我正在研究一个问题,但由于刚开始学习Java而感到非常困惑。我可以理解的任何帮助都会很棒。我必须编写一个具有两个类的程序。主类将从文件中读取内容,并使用第二类来查找文件中相同单词被重复的次数,然后将它们添加到包含单词和单词重复次数的数组中。我可以阅读文件部分。我只是似乎不知道如何从第二个类调用方法以将单词添加到数组并增加计数器。到目前为止,这是我的代码,如果您运行它,您将看到多少错误会

  • 问题内容: 我知道这个问题是重复的,但是我在Internet上找不到答案。 我想从另一个类调用一个方法。 我有Class1和Class2。 在第2类中,我具有该方法: 我想从Class1调用该方法。 感谢您的任何答复。 - - 编辑 - - -— LogCat– 问题答案: 您应该使用以下代码: 如果您不想创建一个新的实例来调用该方法,则可以将方法标为十进制,然后只需调用即可。

  • 问题内容: 我是python的新手。我试图在类中将值从一种方法传递给另一种方法。我搜索了该问题,但无法获得适当的解决方案。因为在我的代码中,“ if”正在调用类的方法“ on_any_event”,而该方法反过来应该调用我的另一个方法“ dropbox_fn”,该方法利用了“ on_any_event”中的值。如果“dropbox_fn”方法在类之外,它将起作用吗? 我将用代码说明。 这里的主要问