黑马程序员技术交流社区
标题:
关于类的定义,需要一些什么东西,希望高手指点
[打印本页]
作者:
吴小东
时间:
2012-7-13 16:17
标题:
关于类的定义,需要一些什么东西,希望高手指点
看了毕老师的视频,自己总结了一下写了一个简单的Person的类,
其中包括,属性,get和set方法,构造代码块初始属性,构造方法,重写了equals,hashcode,toString方法
定义了一个比较器,
希望高手指点一下 还需要定义一些什么东西。
import java.util.*;
import java.lang.*;
class PersonDemo
{
public static void main(String[] args)
{
Person p1 = new Person("lisi",23);
Person p2 = new Person("lisi",23);
Person p3 = new Person("lisi",213,"bj");
sop(p3.getAge());
sop(p1.equals(p2));
sop(p1.hashCode());
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
//自定义比较器,实现compara接口,重写其中的compare方法,
//其中还有个一个equals方法,因为在Object类中有equals方法,所以这里可以不用覆盖
class myCompare implements Comparator
{
public int compare(Object obj1,Object obj2)
{
int num = 0;
if (!(obj1 instanceof Person)&&!(obj2 instanceof Person))
{
throw new RuntimeException("不是合法类型!");
}
Person p1 = (Person)obj1;
Person p2 = (Person)obj2;
if (p1.getName()!=p2.getName())
{
num = p1.getName().compareTo(p2.getName());
}
if (p1.getName()==p2.getName())
{
num = (new Integer(p1.getAge())).compareTo(new Integer(p2.getAge()));
}
return num;
}
}
//建立Person类 含有3个成员变量name,age,address和3个构造函数
class Person
{
private String name;
private int age;
private String address;
//构造代码块,优先于所有构造函数运行,构造函数只能调用一次
{
this.name = "未知";
this.age = 0;
this.address = "未知";
}
//name的get和set方法
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
//age的get和set方法
public void setAge(int age){
if (age > 0 && age < 130 )
{
this.age=age;
}else{
this.age=0;
}
}
public int getAge(){
return this.age;
}
//address的get和set方法
public void setAddress(String address)
{
this.address=address;
}
public String getAddress()
{
return address;
}
//无参构造函数
public Person()
{
}
//带参name和age的构造函数
public Person(String name,int age)
{
this.name = name;
if (age>0 && age<130)
{
this.age = age;
}else
{
this.age = 0;
}
}
//带参数name和age以及address的构造函数
public Person(String name,int age,String address)
{
this(name,age);
this.address=address;
}
//复写Object中的String方法
public String toString()
{
return "姓名:"+this.name+" 年龄:"+this.age+" 地址: "+this.address;
}
//重写hashCode()方法
public int hashCode()
{
int result = 17;
result = result*37 + name.hashCode() + address.hashCode();
result = result*37 + age;
return result;
}
//重写equals()方法
public boolean equals(Object obj)
{
return ((obj instanceof Person)&&(name==((Person)obj).name)&&(age==((Person)obj).age)&&(address==((Person)obj).address));
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2