//类作为形参: 该类作为对象
public class Cat{
public void eat(){
System.out.println("猫吃东西");
}
}
public class CatOperator{
public void uesCat(Cat c){
c.eat();
}
}
public class CatDome{
public static void main(String[] args){
CatOperator co = new CatOperator();
Cat c = new Cat();
co.useCat(c);
}
}
//类名作为返回值
public Cat getCat(){
Cat c = new Cat();
return c;
}
2. 抽象类名作为形参和返回值: 该抽象类的子类对象
//抽象类名作为形参: 抽象类的子类对象
public abstract class Animal{
public abstract void eat();
}
//抽象类父类Animal不能实例化,多态形式传递eat方法
//Cat类
public class Cat extends Animal{
@Override //重写Animaleat方法
System.out.println("猫吃鱼");
}
//AnimalOperator类
public class AnimalOperator{
public void useAnimal(Animal a){ //创建对象 Animal a = new Animal();
a.eat();
}
public Animal getAnimal(){
Animal a = new Cat();
return a;
}
}
//AnimalDemo类
public class AnimalDemo{
public static void main(String[] atgs){
AnimalOperator ao = new AnimalOperator();
Animal a = new Cat();
ao.uesCat(a);
Animal a2 = ao.getAnimal(); //Aniaml a2 = new Cat()
a2.eat();
}
}
3. 接口名作为形参和返回值
//
public interface Jumppinp{
void jump();
}
//接口的操作类
public class JumppingOperator{
//形参是接口:该接口的实现类对象Jumpping j = new Cat();
public void useJumpping(Jumpping j){
j.jump();
}
public Jumpping getJumpping(){ //返回型是接口名,返回的是接口的实现类对象
Jumpping j = new Cat();
return j;
}
}
//Cat类(接口不能实例化,创建一个类去实现实例化)
public class Cat extends Jumpping{
@Override
public void jump(){
System.out.println("猫跳高");
}
}
//测试类
public class JumppingDemo{
public static void main(String[] args){
//创建操作类对象,并调用方法
JumppingOperator jo = new JumppingOperator();
Jumpping j = new Cat();
jo.useJumpping(j);
Jumpping j2 = jo.getJumpping(); //new Cat()
j2.jump();
}
}