面向对象-参数和返回值

面向对象-参数和返回值

<1>类名作为参数和返回值

  1. 方法的形参是类名,就是需要该类的对象.
  2. 方法的返回值是类名,就是返回一个该类的对象.
//猫类
public class Cat {
    public void eat(){
        System.out.println("猫吃鱼.");
    }
}
//----------------------------------------
//操作类
public class CatOperator {
    public void abc(Cat cat) {
        cat.eat();
        //方法的形参是类名,就是需要该类的对象.
    }
    public Cat getCat() {
        Cat cat = new Cat();
        return cat;
        //方法的返回值是类名,就是返回一个该类的对象.
    }
}
//-------------------------------------------
//测试类
public class Demo {
    public static void main(String[] args) {
        CatOperator co = new CatOperator();
        Cat c = new Cat();
        co.abc(c);//把Cat c这个对象传给形参
        Cat cat = co.getCat();//方法的返回值赋值是个对象,给cat
        cat.eat();//再用这个对象调用方法
    }
}

<2>抽象类名作为形参和返回值

  1. 方法的形参是抽象类名, 其实需要的是该抽象类的子类对象.
  2. 方法的返回值是抽象类名, 其实返回的是该抽象类的子类对象.
//动物类  父类
public abstract class Animal {
    public abstract void eat();
}
//--------------------------------------
//猫类  子类
public class Cat extends Animal{
    @Override
    public void eat(){
        System.out.println("猫吃鱼.");
    }
}
//----------------------------------------
//操作类
public class CatOperator {
   public void useAnimal(Animal a){
       //方法的形参是抽象类名, 其实需要的是该抽象类的子类对象.
       a.eat();
   }
   public Animal getAnimal(){
       //方法的返回值是抽象类名, 其实返回的是该抽象类的子类对象.
       Animal animal = new Cat();
       return animal;
   }
}
//-------------------------------------------
//测试类
public class Demo {
    public static void main(String[] args) {
        CatOperator co = new CatOperator();
        Animal a = new Cat();//多态的形式创建子类对象
        co.useAnimal(a);
        Animal animal = co.getAnimal();
        animal.eat();//接收返回的对象,调用方法
    }
}

<3>接口名作为形参和返回值

  1. 方法形参是接口名, 其实需要的是该接口的实现类对象.
  2. 方法返回值是接口名, 其实返回的是该接口的实现类对象.
//接口  跳
public interface Jump {
    void jumpping();
}
//------------------------------------------
//接口的实现类
public class pig implements Jump{
    @Override
    public void jumpping() {
        System.out.println("猪能跳高了.");
    }
}
//-------------------------------------------
//操作类
public class CatOperator {
        //方法形参是接口名
        public void useJumping(Jump jump){
                jump.jumpping();
        }
        //方法返回值是接口名
        public Jump getJump(){
                //创建该接口的实现类对象.
                Jump jump = new pig();
                return jump;
        }
}
//---------------------------------------------
//测试类
public class Demo {
    public static void main(String[] args) {
        CatOperator co = new CatOperator();
        //需要Jump类型的对象作为参数,就要用多态的形式创建接口的实现类的对象.
        Jump j  =new pig();
        co.useJumping(j);
        Jump jump = co.getJump();
        jump.jumpping();
    }
}

posted @ 2023-02-01 11:06  大宝贝94106  阅读(33)  评论(0)    收藏  举报