课件中的第一种方案,在Master类中并没有实例化cat,那为什么可以直接用cat调用相应的方法呢?
package com.imooc.animal;
public class Master {
/*喂宠物:
* 喂猫咪:吃完东西后,主人会带着去玩儿线球
* 喂狗狗:吃完东西后,主人会带着狗狗去睡觉
*/
public void feed(Cat cat) {
cat.eat();
cat.playBall();
}
public void feed(Dog dog) {
dog.eat();
dog.sleep();
}
}
package com.imooc.test;
import com.imooc.animal.Cat;
import com.imooc.animal.Dog;
import com.imooc.animal.Master;
public class MasterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Master master=new Master();
Cat one=new Cat();
Dog dog=new Dog();
master.feed(one);
master.feed(dog);
}
}课件中的第一种方案,在Master类中的feed()方法中并没有实例化cat和dog,那为什么可以直接用cat和dog调用相应的方法呢?这是什么原理? 求老师解答!
0
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕阿莹
2019-04-22 10:26:11
其实,这里是要调用这个方法时,必须要求穿对应的参数类型的对象过来,所以要是使用这个方法,必然会有传过来实例化好的这个类型的对象。
其实,参数除了传基本类型,也可以穿引用类型的。这里就和传String类型的参数是一样的,String 也是一个引用类型的,同学可以想象一下,之前传的参数是String类型。
因为我们知道,一定会传一个Cat对象或Dog 对象过来,我们又知道这个类型的对象都有什么方法,
所以,我们就可以在方法中,先用假定以及传过来了一个叫cat的或者dog的对象去调用他肯定有的方法或者属性了。到时候调用该方法时,传过来的这个参数,在方法中就是叫cat或者dog了
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星