java参数传递之形参和返回值

1.类名作为形参

方法的形参是类名,其实需要的是该类的对象

//创建一个猫类

public class Cat {
          
   
    public void eat(){
          
   
        System.out.println("猫吃老鼠");
    }
}

//创建一个操作类,其方法的参数是猫类

public class Catoperation {
          
   
    public void useCat(Cat c){
          
   
        c.eat();
    }
}

//测试类,创建对象Catoperation(),Cat(),再调用方法

public class Test {
          
   
    public static void main(String[] args) {
          
   
        Catoperation co=new Catoperation();
        Cat c=new Cat();
        co.useCat(c);
    }
}

2.类名作为返回值

//猫类保持不变 //下面创建操作类

public class Catoperation {
          
   
    public Cat getCat(){
          
   
        Cat c=new Cat
        return c;
    }
}

//测试类,创建对象Catoperation(),返回Cat,然后调用Cat()方法

public class Test {
          
   
    public static void main(String[] args) {
          
   
        Catoperation co=new Catoperation();
        Cat c2=co.getCat();
        c2.eat();
}

3.抽象类作为形参

方法的形参是抽象类名,实际需要该抽象类的子类对象 抽象类不能实例化,以多态的形式,创建它的子类对象进行传递继承重写实现,子类重写方法

//创建抽象类

public abstract class Animal {
          
   
public abstract void eat();
}

//创建子类重写

public class Cat extends Animal {
          
   
@Override
public void eat() {
          
   
System.out.println("猫吃鱼");
}
}

//创建操作类

public class AnimalOperator {
          
   
public void useAnimal(Animal a) {
          
    //Animal a = new Cat();
a.eat();
}
}

//测试类

public class AnimalDemo {
          
   
public static void main(String[] args) {
          
   
AnimalOperator ao = new AnimalOperator();
Animal a = new Cat();
ao.useAnimal(a);
Animal a2 = ao.getAnimal(); //new Cat()
a2.eat();
}
}

3.抽象类作为返回值

//抽象类,子类不变 //操作类

class AnimalOperator {
          
   
public Animal getAnimal() {
          
   
Animal a = new Cat();
return a;
   }
}

//测试类

public class AnimalDemo {
          
   
public static void main(String[] args) {
          
   
Animal a2 = ao.getAnimal(); //new Cat()
a2.eat();
    }
}

4.接口名作为形参和返回值

方法的形参/返回值 是接口,实际上是该接口的实现类方法

//接口

interface Jumpping {
          
   
void jump();
      }

//操作类

class JumppingOperator {
          
   
public void useJumpping(Jumpping j) {
          
    //Jumpping j = new Cat();
j.jump();
   }
}

//实现类方法

class Cat implements 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);
     }
}
经验分享 程序员 微信小程序 职场和发展