课程最后的问题

课程最后的问题

public class Animal2 {
	public String name;
	public int month;
	
	public Animal2() {
		
	}
	
	public void eat() {
		this.name=name;
		System.out.println(this.name+"在吃东西");
	}
	
	public void help(final Animal2 temp) {
		Animal2 temp = new Animal2();
		temp.name="妞妞";
		temp.eat();
	}
	public static void main(String[] args) {
		Animal2 one = new Animal2();
		one.name="花花";
		Animal2 two = new Animal2();
		two.name="凡凡";
		one.help(two);
	}

}

1、为什么这里temp = new Animal2();的前面不加Animal2  ,变成Animal2  temp = new Animal2();

2、引用类型的变量 —— 初始化之后不能再指向另一个对象,temp不是同一个对象吗?

3、初始化的形式是Animal2  temp = new Animal2();,方法里只是把Animal2作为参数,也没说被初始化啊。Animal2作为参数和初始化之间有什么我不知道的联系吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、two,temp都是对象的引用。

2、Animal2 two=new Animal2();

根据以下几步来理解:

Animal2类不能作为引用类型,Animal2是一个类,

Animal2 two;是定义一个Animal2类的引用。

two=new Animal2();是创建一个Animal2类型的对象,使引用two指向新创建的对象。

当two做为参数传入help方法之前,执行语句:

Animal2 temp=new Animal2();

将two的引用指向了创建的Animal2类型的对象。传入之后,在help方法中,temp,two指向同一片地址,都指向新创建的对象。

3、如果不加final,temp之前加Animal2不会报错。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-06-19 18:46:06

同学你好,课程中最后的问题是考察代码是否运行正确,出错的位置在何处。

1、这里temp = new Animal2();的前面加不加Animal2,temp都会报错,因为temp在传参的时候被final修饰,不能再去重新指向新的对象。

http://img1.sycdn.imooc.com//climg/5d0a108a0001994704350126.jpg

2、temp是引用,指向对象。同学在这里的问题是什么呢?请同学详细描述一下哦~

3、如下图所示,two在main方法中经过初始化后(这里应该是Animal2 two=new Animal2();),作为参数传入help方法中,所以,这里的temp是已经被初始化后的对象引用哦~

http://img1.sycdn.imooc.com//climg/5d0a111900014e7407090256.jpg

http://img1.sycdn.imooc.com//climg/5d0a117c000166a305030125.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕移动ttong #1
    也就是说: 1、two和temp都叫对象的引用吗? 2、只有在main方法中初始化Animal2类,把two作为参数传给help方法,Animal2类才能作为引用类型,对吗? 3、假如没有加final,temp = new Animal2();的前面加不加Animal2对不对?
    2019-06-19 21:46:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师