3-2 temp问题理解
public class Test {
public static void main(String[] args) {
Animal one=new Animal();
one.name="花花";
Animal two=new Animal();
two.name="帆帆";
one.help(two);
}
}public class Animal {
public String name;
public int month;
public Animal() {
}
public void eat() {
System.out.println(this.name+"在吃东西");
}
public void help(final Animal temp) {
temp=new Animal();
temp.name="牛牛";
temp.eat();
}
}老师 temp=new Animal();提示报错 是不是因为final修饰了Animal类 导致Animal 在Test类中被one和two两个对象初始化后 不能再在help方法中被对象temp修改?我的理解对吗?
13
收起
正在回答
2回答
同学你好,这里并不是因为在Test类中,one和two两个对象初始化造成的,而是因为:
1、因为参数被声明为final,而temp是一个引用变量,那么它就不能被修改指向另一个对象,所以会报错。
2、使用new Animal();在进入help方法前,传入的这个Animal类型的temp参数已经进行实例化了,因为在内存中已经分配空间了,这时让temp指向了新的对象,就会报错。
这里我们不写Test类,只写Ainmal类,它是不符合语法规范的,所以Animal类会直接报错,而不是因为Test类实例化了两个Animal类型的对象。例如:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
慕后端4084011
2019-10-13 13:20:48
应该是final修饰了Animal类型 不是Animal类 ?
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星