面向对象-参数和返回值
<1>类名作为参数和返回值
- 方法的形参是类名,就是需要该类的对象.
- 方法的返回值是类名,就是返回一个该类的对象.
//猫类
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>抽象类名作为形参和返回值
- 方法的形参是抽象类名, 其实需要的是该抽象类的子类对象.
- 方法的返回值是抽象类名, 其实返回的是该抽象类的子类对象.
//动物类 父类
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>接口名作为形参和返回值
- 方法形参是接口名, 其实需要的是该接口的实现类对象.
- 方法返回值是接口名, 其实返回的是该接口的实现类对象.
//接口 跳
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();
}
}