2013-11-22 48 views
-1
Customer.java:17: error: cannot find symbol 
super.display(); 
    ^
symbol: method display() 

1 error 

这是编译我的程序时发生的情况。如何在Customer子类中显示对象数据?在Java中调用超级方法

import java.util.Scanner; 

public class Person { 

    private String name; 
    private String address; 
    private String number; 

    //No Argument constructor// 
    public Person() { 
     name = ""; 
     address = ""; 
     number = ""; 
    } 

    //Explicit value constructor// 
    public Person(String num, String nam, String add) { 
     number = num; 
     name = nam; 
     address = add; 
    } 

    //Accessor method// 
    public String getName() { 
     return name; 
    } 

    //Mutator method// 
    public void setName(String name) { 
     this.name = name; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getTelephoneNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 

    public String toString() { 
     return name + "\n" + address + "\n" + number; 
    } 
} 

子类:

public class Customer extends Person { 

    public Customer(String num, String nam, String add) { 
     super(num, nam, add); 
    } 

    public boolean checkResponse(char response) { 
     if (response == 'Y') { 
      return true; 
     } 
     return false; 
    } 

    public void display() { 
     super.display(); 
    } 
} 
+0

'super.display();'是问题所在。它不在超类。 – Santosh

+0

@Sandhu:请不要在您正在编辑的问题中添加更多内容。它混淆了实际代码的意图,并可能为其他人解决提供红鲱鱼。 – Makoto

+0

@Makoto我刚刚格式化了代码。就这样。我没有再添加任何东西。请在编辑历史记录中重新检查我的编辑 –

回答

0

由于错误是想告诉你,super.display()不存在。

+0

如何使其相关换句话说我如何覆盖tostring方法 – user3019552

3

为了使super.display()正常工作,您需要在父类中使用名为display()的方法。

由于您没有这样的方法,因此Java将不允许您编译的代码。

由于您似乎试图在打印对象时显示有关该对象的有用信息,为何不重写toString()?这里需要注意的是,你没有任何更有意义的信息来表明它是一个,它是一个Person(没有Customer特定的字段,所以继承关系是没有意义的)。

你可能要考虑从Person增加更多的信息,以区分Customer然后覆盖toString()

0

您没有在父类(Pesron)中定义的display()函数;

1

发生此错误的原因是Person类中没有display()方法。所以,你不能调用使用super.display()

所以在Customerdisplay()方法更改为

public void display() { 
     System.out.println(super.toString()); 
    } 
+0

所以我如何覆盖toString方法在我的客户类别 – user3019552

+0

查看编辑答案 –

+1

谢谢它编译我刚刚省略** System.out.println(“客户电话号码:”+号码); ** – user3019552

0

你可以简单地访问号码,姓名或直接解决不存在的方法。修改display()方法,删除super.display(),如下所示。在Java中

public void display() 
{ 
    System.out.println("Customer telephone number:" + number); 
} 
0

Super关键字相关的父类和Super.display()意味着你调用父class.Your父类的显示方法的人,你正在扩展它public class Customer extends Person {

但没有display()因此你的编译错误