课程最后留下的小问题

课程最后留下的小问题

public class Animal{
    //成员属性:姓名、年龄
    public String name;
    public int month;
    
    //无参构造方法
    public Animal(){
    
    }
    
    //吃东西的方法
    public void eat(){
        System.out.println(this.name+"在吃东西");
    }

    //help的方法
    public void help(final Animal temp){
        temp=new Animal();
        temp.name="牛牛";
        temp.eat();
    }
}


class TestAnimal{
    public static void main(String[] args){
        Animal one=new Animal();
        one.name="花花";
        Animal two=new Animal();
        two.name="凡凡";
        one.help(two);
    }
}

老师,这是在课程结尾留下的代码问题,问运行时哪里出错了,我想是在help方法里的第一行代码:temp=new Animal();出了问题

我的疑问是:

1、我不太理解temp=new Animal();,这是什么意思?是指重新为temp创建新的对象?

2、public void help(final Animal temp),final竟然都能加在参数里,这又是什么操作?

正在回答

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

2回答

同学你好,

temp=new Animal();,是指temp这个引用重新指向了一个新的Animal对象。抱歉老师之前说错了,这里和子类没有关系。

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

好帮手慕珊 2019-05-04 14:33:29

你好!如果代码这么写:Animal temp=new Animal();这里的temp是Anmial类的引用,我们叫做把它指向了子类的对象。如果重新赋值,temp=new Animal();也就是temp这个引用重写指向了子类的一个新的对象。

2、final可以加到参数里,这个参数不能指向新的对象了,也就是如果在方法中写上temp=new Animal()会报错。

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

  • 提问者 鱼儿0001 #1
    老师,我不太理解什么叫做把它指向子类的对象。。。。Animal temp=new Animal();跟子类有什么关系。。。。不就是创建一个Animal类的对象么,哪里出现了子类,又指向子类的对象?
    2019-05-05 16:37:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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