在视频中,看了利用this关键字去比较,一个人是否与自己同龄时,遇到的一些改进问题。先附上代码:
//需求:比较一个人是否与自己同龄。
//先创建一个人的类
class Person
{
int age;
Person(int age)//构造函数
{
this.age=age;
}
public boolean conpare(Person p)//比较是否为同龄人的方法,返回为真或假
{
return this.age==p.age;
}
}
class Demo
{
public static void main(String[] args)
{
Person p = new Person(10);
Person p1 = new Person(12);
System.out.println(p1.compare(p));
}
}
这个结果,是创建了两个新的对象并比较,当然没有问题。
//新需求:我想在Person类内创建一个初始个体,来比较新建的个体是否其同龄。
class Person
{
int age;
Person(int age)
{
this.age=age;
}
Person p = new Person(10);//创建一个基准个体,以此为对象与其他新建对象进行比较。
public void compare()//以后不用给其传递参数
{
System.out.println(this.age==p.age);
}
}
class Demo
{
public static void main(String[] args)
{
Person p = new Person(10);
p.compare();
}
}//这样为什么可以编译通过,但是执行的时候,却有错?
当把Person类修改下则可以运行:
class Person
{
int age;
Person(int age)
{
this.age=age;
}
public void compare()
{
Person p = new Person(10);//将对象创建放在函数内部。
System.out.println(this.age==p.age);
}
}// 但这样做,相当于每次调用compre时候都创建了一个对象P,违背了需求,设定一个基准P,也就是说,想每次创建的对象都与同一个P进行比较。
|
|