修复覆盖错误

时间:2015-03-26 23:55:35

标签: java

我尝试运行程序,但我得到了这四个错误。

  

TestCusomer.java:25:错误:Invoice中的toString()无法覆盖Object中的toString()(第49行同样的事情)

  

第59行无法找到符号。 myCustomer.setTrn(112233778)

     

第60行无法找到符号。 myCustomer.setPersentage(150)

我的程序如下:

      class Invoice
      {


      int trn; //TAX REGISTRATION NUMBER
      int persentage;
      public Invoice{}

      public int setTrn(int trn){
        this.trn = trn;
      } 

      public int getTrn(){
         return trn;
      }

      public void setPersentage(int persentage){
          this.persentage = persentage;
      } 

      public int getPersentage(){
          return persentage;
      }

      String toString(){
          System.out.println(trn+" : "+persentage);
      }
 }   

 class Customer{

    int trn;
    int charging= 0;

    public Customer(int trn){
        this.trn = trn;
    }

    public int charge(int amount){
        charging = charging + amount;
    } 

    public int charge(int amount , int trn){
        if (this.trn == trn){
            charging = charging + amount;
        }
    }

    String toString(){
        System.out.println(trn+" : "+charging);
    }
}

 class TestCustomer
{
    public static void main(String[] args){
        Customer myCustomer = new Customer(112233778);
        myCustomer.charge(100);
        myCustomer.setTrn(112233778);
        myCustomer.setPersentage(150);

        System.out.println(myCustomer);
    }
}

2 个答案:

答案 0 :(得分:2)

很少,

  1. 您需要声明toString方法公开
  2. 您需要在toString种方法
  3. 中返回一个字符串
  4. 我强烈建议您在覆盖方法时添加@Override表示法以确保实际覆盖方法
  5. 发生cannot find symbol...是因为Customer中没有定义这些方法,Invoice
  6. 中有这些方法

答案 1 :(得分:0)

你的toString()方法需要返回String对象。您正在输出一个字符串但不返回字符串。也将它们公之于众。

例如,Invoice类的toString()方法应为:

public String toString()
{
    return trn  + " : " + persentage;
}

对于您的第二个问题(找不到符号),这些方法位于Invoice类中,而不是Customer类中,因此无法在Customer对象上调用它们。