Java基础学习笔记17——抽象类和接口作为形参和返回值
目录
1、类名作为形参和返回值
- 方法的形参是类名,其实需要的是该类的对象;
- 方法的返回值是类名,其实返回的是该类的对象。
代码演示:
package prefPackage;
//猫类
public class Cat {
public void eat(){
System.out.println("猫吃鱼");
}
}
package prefPackage;
//猫的操作类
public class CatOperator {
public void eatOf(Cat c){
//参数c为猫类对象
c.eat();
}
public Cat getCat(){
Cat c = new Cat();
return c;
}
}
package prefPackage;
//测试类
public class Test {
public static void main(String[] args) {
//创建操作类对象,并调用方法
CatOperator co = new CatOperator();
Cat c = co.getCat();
co.eatOf(c);
}
}
结果:
猫吃鱼
2、抽象类名作为形参和返回值
- 方法的形参是,其实需要的是该抽象类的子类对象。
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象。
代码演示:
package prefPackage1;
public abstract class Animal {
public abstract void eat();
}
package prefPackage1;
public class AnimalOperator {
public void eatOf(Animal a){
a.eat();
}
public Animal getAnimal(){
Animal a = new Cat();
return a;
}
}
package prefPackage1;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
package prefPackage1;
public class Test {
public static void main(String[] args) {
//创建操作类对象,并调用方法
AnimalOperator ao = new AnimalOperator();
Animal a = ao.getAnimal(); //多态
ao.eatOf(a);
}
}
结果:
猫吃鱼
3、接口名作为形参和返回值
- 方法的形参是接口名,其实需要的是该接口的实现类对象。
- 方法的返回值是接口名,其实返回的是该接口的实现类对象。
代码演示:
package prefPackage2;
public interface Jumping {
public abstract void jump();
}
package prefPackage2;
public class Cat implements Jumping{
@Override
public void jump() {
System.out.println("猫可以跳高了");
}
}
package prefPackage2;
public class JumpingOperator {
public void useJumping(Jumping j){
j.jump();
}
public Jumping getJumping(){
Jumping j = new Cat();
return j;
}
}
package prefPackage2;
public class Test {
public static void main(String[] args) {
//创建操作类对象,并调用方法
JumpingOperator jo = new JumpingOperator();
Jumping j = jo.getJumping(); //多态
jo.useJumping(j);
}
}
结果:
猫可以跳高了