2013-08-06 72 views
0
package wr3; 

public class Person { 
    private String name; 
    private String id; 
    private String bday; 
    private String address; 

    public String getName(){ 
     return name; 
    } 

    public String getID(){ 
     return id; 
    } 

    public String getBday(){ 
     return bday; 
    } 

    public String getAdd(){ 
     return address; 
    } 


    public void equals(){ 
     super.equals(id); 
    } 
    @Override 
    public String toString(){ 
     return(name + bday + id + address); 
    } 
} 

package wr3; 

public class Test { 
    public static void main(String[] args){ 
     String name = "Claude Rhay Torre"; 
     String name2 = "Bea Señerpida"; 
     String id = "10302993"; 
     String id2 = "11102825"; 
     String bday = "06/201993"; 
     String bday2 = "11/17/1994"; 
     String address = "BF Better Living Basak LLC"; 
     String address2 = "F Martyr St Poblacion LLC"; 
     boolean eq; 

     System.out.println(name.toString()); 
     System.out.println(id.toString()); 
     System.out.println(bday.toString()); 
     System.out.println(address.toString()); 
     System.out.println(); 

     System.out.println(name2.toString()); 
     System.out.println(id2.toString()); 
     System.out.println(bday2.toString()); 
     System.out.println(address2.toString()); 


     eq = id.equals(id2); 
     System.out.println("\nDo they have the same ID number? " + eq); 

    } 
} 

所以我有这样的代码。 而且我也有这个问题。如何覆盖?

  • A. Object类
    1. 研究对象在java.lang包中的类。
    2. 了解其所有方法。
    3. 创建人员类的要求:
      a。实施封装
      b。这些字段包括:姓名,身份证(身份证号码),生日,以及 地址。
      c。一个将覆盖Object类的equals()方法的方法。 如果两个人拥有相同的身份证件,则两个人相同。 d。一种将覆盖Object 类的toString()方法的方法。它显示人物 对象的ID,姓名,生日和地址。
    4. 创建一个测试类来创建Person对象并适当地调用equals()和toString()方法。

我的问题是,这两个类甚至关系? 我的意思是,我的“toString”和“equal”方法调用我的测试类是我的人的类?或者是Object类的方法“toString”和“equal”

如何覆盖对象类中的等于toString类?

+0

你'Test'类不会创建'Person'对象... –

+2

岂不执行问题的方法基本上立即回答这个问题?您可以通过复制签名来覆盖方法。 –

+0

@DaveNewton我不明白......你能详细解释一下吗? :( –

回答

0

当从另一个类继承一个方法时(例如public String toString()Object),所有你需要做的重写它就是在你的类中定义你自己的public String toString()。您已经在代码中实际执行了此操作,并且您已成功替代Person的所有实例的toString()

的原因,你没有看到你所期望的结果是toString()equals()方法你调用来自String类,而不是从你的Person类。这是因为你在String对象上调用它们,而不是在Person对象 - 而这两个类没有层次关系(除了它们共同的Object祖先之外)。

Test可能是这样的,而不是:

Person p1 = new Person(); 
    p1.name = "Claude Rhay Torre"; 
    p1.id = "10302993"; 
    p1.bday = "06/20/1993"; 
    p1.address = "BF Better Living Basak LLC"; 

    Person p2 = new Person(); 
    p2.name2 = "Bea Señerpida"; 
    p2.id2 = "11102825"; 
    p2.bday2 = "11/17/1994"; 
    p2.address2 = "F Martyr St Poblacion LLC"; 

    System.out.println(p1.toString()); 
    System.out.println(p2.toString()); 
+0

你可以告诉我如何进行继承吗?比如,重做我的代码?:/我似乎没有得到它。我怎样才能让它们相关? –

+0

@ClaudeRhay由于各种原因,'String'被Java的设计者标记为'final',这意味着你根本不能创建'String'的子类 –

+0

噢好吧,我似乎现在就明白了,那么我怎么才能让它们继承我的Person类呢? –