public class Test2 {
public static void main(String[] args) {
FinalPerson fp = new FinalPerson();
int age = fp.getAge();
System.out.println(age);
//得到被修饰的fp2
FirstPerson fp2 = fp.getFp();
fp2 = new FirstPerson();
System.out.println(fp2.getAge());
System.out.println("fp2"+fp2);//输出对象内存引用
//这里new一个新对象fp3
FirstPerson fp3 = new FirstPerson();
fp3.setAge(66);
//将fp3的引用赋给fp2
fp2 = fp3;
System.out.println("fp2"+fp2);//输出对象引用,这里的fp2地址已经改变了,为什么呢??
}
}
class FinalPerson{
private final int age = 5;
// 将fp修饰为final
private final FirstPerson fp=null;
public int getAge() {
return age;
}
public FirstPerson getFp() {
return fp;
}
}
class FirstPerson{
private int age = 5;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
为何final的fp2可以被赋值fp3的引用呢??
------解决思路----------------------
注意fp2变量并未添加final关键字,你所谓的常量是对于FinalPerson.fp来说他是不可改变的.
------解决思路----------------------
FirstPerson fp2 = fp.getFp(); 这句相当于fp2=null,所以final对其限制