方法重写2--java总结

来源:互联网 发布:研究生矩阵论教学视频 编辑:程序博客网 时间:2024/06/04 18:10

在方法重写中注意 对自己定义的类中要重写某些方法 ,在此类中某些类型的方法可以直接调用 因为在这些类型中已经重写了这些方法。


/*
*对obj方法重写 注意变量的类型
*/


import java.util.*;


public class Testcomp
{
public static void main(String[] args)
{
List l1 = new LinkedList();
l1.add(new Name("hua","kong"));
l1.add(new Name("ting","fan"));
l1.add(new Name("fang","kong"));
System.out.println(l1);

Collections.sort(l1);
System.out.println(l1);
}
}


class Name implements Comparable//自己定义的name类 继承了接口Comparable
{
String firstname;///String 类对compareTO方法已经重写了 所以可以直接调用
String lastname;

Name(String firstname,String lastname)
{
this.firstname = firstname;
this.lastname = lastname;
}

public String getfirstname()
{
return firstname;
}

public String getlastname()
{
return lastname;
}

public String toString()
{
return firstname+""+lastname;
}///////重写tostring方法 输出name时会直接输出全名

public boolean equals(Object obj)//只有当 姓和名全相同时才相等 所以要重写 equals方法
{
if(obj instanceof Name)
{
Name n =(Name) obj;
return firstname.equals(n.firstname)&&lastname.equals(n.lastname);
}//return 语句会结束当前的方法 所以下一条 return可加else可不加 效果都一样
return super.equals(obj);
}
public int hashCode() 
{
   return firstname.hashCode();
}//对hashcode重写 hashcode位于obj类内

public int compareTo(Object o)
{
Name  n = (Name) o;
int lastcmp = lastname.compareTo(n.lastname);///String 类对compareTO方法已经重写了 所以可以直接调用

return
(lastcmp !=0 ? lastcmp:firstname.compareTo(n.firstname));
}
}