1.类名作为形参和返回值
package java_learn;
/*
类名作为形参和返回值。
1.方法的形参是类名。其实需要的是对象;
2.方法的返回值是类名,其实返回的是对象
*/
public class Cat {
public void eat(){
System.out.println("这是猫的eat方法,猫吃鱼");
}
}
package java_learn;
/*
类名作为形参和返回值。
1.方法的形参是类名。其实需要的是对象;
2.方法的返回值是类名,其实返回的是对象
*/
public class CatOperator {
public void useCat(Cat c){//猫的操作类中usecat方法需要cat类作为形参,其实是需要Cat类的对象作为形参。
c.eat();
}
}
package java_learn;
/*
测试类!
*/
public class CatDemo {
public static void main(String[] args) {
//创建对象,调用方法
CatOperator co=new CatOperator();
Cat c=new Cat();
c.eat();
//co.useCat();报错,“没有参数”
co.useCat(c);//需要输入Cat类的对象c。
}
}
2.抽象类名作为形参和返回值
package java_learn;
/*
抽象类名作为形参和返回值。
1.方法的形参是抽象类名,其实需要的是该抽象类的子类对象;
2.方法的返回值是抽象类名,其实需要的是该抽象类的子类对象。
*/
public abstract class Animal {
public abstract void eat();
}
package java_learn;
public class AnimalOperator {
public void useAnimal(Animal a){
a.eat();
}
}
package java_learn;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("抽象类Aniaml类的子类Cat中eat方法,猫吃鱼!");
}
}
package java_learn;
public class AnimalDemo {
public static void main(String[] args) {
//创建对象,调用方法
AnimalOperator ao=new AnimalOperator();
//Animal a=new Animal();报错,抽象类不能实例化。
Animal a=new Cat();
ao.useAnimal(a);//抽象类不能直接实例化,故需要创建抽象类的子类如Cat类。
}
}
3.接口名作为形参和返回值
1)方法的形参是接口名,其实需要的是接口的实现类对象;
2)方法的返回值是接口名,其实需要的是该接口的实现类对象。