Java基础00-形参和返回值22
1. 形参和返回值
1.1 类名作为形参和返回值
1.2 抽象类名作为形参和返回值
代码示例:
方法的形参是抽象类名
抽象动物类:
定义了一个抽象的eat方法
动物的操作类:
创建一个useAnimal方法,它的形参是抽象类Animal
测试类:
创建操作类对象,并调用方法:
调用方法时,提示我们需要的是Animal类型的实参。往下看
在操作类中,看到Animal a 也能调用方法,说明a是一个实例对象。
但是Animal是一个抽象类,并不能实例化,这里只能使用多态的形式,所以需要的是它的子类对象,创建它的子类对象然后传递过来。
当子类传递过来时就形成这样:Animal a = new 子类;
那么就创建一个Animal的子类Cat,并继承它:
继续写测试类:
通过多态的形式将创建对象a,然后将a传递给useAnimal方法,
形成:Animal a = new Cat();
然后调用eat方法输出“猫吃鱼”
运行结果:
方法的返回值是抽象类名
继续编写操作类:
这里将void改为Animal,所以返回的是Animal对象,但是Animal对象是抽象类,不能直接实例化。
所以我们利用多态的形式,返回它的子类。
Animal a = new Cat();
- 可以得出结论:
方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
在测试类中调用:
ao.getAnimal返回的是Animal的子类对象Cat,
就形成了:Animal a2 = new Cat();
运行结果:
和将抽象类做为新参的结果是一样的。
1.3 接口名作为形参和返回值
将接口名作为形参和返回值,其实是和抽象类一样的,
只不过接口将子类变成了实现类。