关于多太的问题,具体问题写在注释里面的
public class Person
{
//年龄
private int age;
//身高
private double height;
private String name;
public Person(String name){
if (name==null||name==""){
System.out.println("人都有名字,初始化时请指定人名");
this.name=null;
}else this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//重写toString方法
public String toString()
{
return("Name:"+name+",Age:" + age + ",Height:" + height);
}
//重写equals方法
public boolean equals(Person person){
if(person!=null&&person.getName()!=null&&this.name==person.getName()){
return true;
}
return false;
}
public static void main(String[] args){
Person[] persons=new Person[5];
persons[0]=new Person("One");
persons[1]=new Person("Two");
persons[2]=new Person("Three");
//按我的想法,这里应该返回1,但是结果是返回-1,发现在调用equals方法时,总是调用
//Object对象的equals方法,为什么不调用Person类的equals方法呢?怎么不表现多态了?请高手指点!
int result= ArraysUitls.search(persons,new Person("Two"))
}
}
}
//ArraysUitls.java
public class ArrayUitls
{
/**
* 定义一个工具方法,工具方法从字符串数组中找到对应的字符串元素的位置
* @param array 搜索的数组
* @param target 搜索的对象
* @return 目标字符串出现的位置,-1表明找不到
*/
public static int search(String[] array, String target)
{
for (int i = 0 ; i < array.length ; i++ )
{
if (array!= null && array.equals(target))
{
return i;
}
}
return -1;
}
public static int search(Object[] array,Object target){
for(int i=0;i<ARRAY.LENGTH;I++){
if(array!=null&&array.equals(target)){
return i;
}
}
return -1;
}
}
|