形参和返回值
1、类名作为形参和返回值—->(都是需要该类的对象)
1.1 方法的形参是类,其实需要的是该类的对象
1.2 方法的返回值是类,其实返回的是该类的对象
// 定义一个Cat类
public class Cat { _public void eat(){ System._out.println(“猫吃鱼”); }}
———————————————————————————————————
// 测试类
public class CatDemo {
// 创建CatOperator操作类对象并调用方法
public static void main(_String[] args) {
CatOperator co = new CatOperator();
Cat cat = new Cat();
// 类作为形参是需要一个类的对象作为参数传参
co.useCat(cat);
System._out.println(“—————————“);
// 类作为返回值同样需要一个类的对象作为返回值类型
Cat cat1 = co.getCat(); // new Cat();
cat1.eat(); } }
——————————————————————————————————
// 定义另一类,定义类的方法,方法的形参和返回值为Cat类
public class CatOperator {
// 类命Cat作为形参,uesCat()方法使用Cat类作为形参
public void useCat(_Cat c){ // Cat c = new Cat();类名作为形参是需要称为一个对象
// 通过Cat类创建的变量调用eat()方法
c.eat(); }
// 类名Cat作为返回值,返回值类型是Cat类
public Cat getCat(){
Cat c = new Cat();
// c是Cat类的对象,类名为返回值类型也是需要一个对象
return c; } }_
2、抽象类名作为形参和返回值
2.1 方法的形参是抽象类名,其实需要的是该抽象类的子类对象(抽象类无法直接实例对象)
2.2 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
// 定义一个抽象的动物类
public abstract class Animal {
// 定义一个抽象的eat()方法
public abstract void eat(); }
———————————————————-
public class AnimalOperator {
// 定义一个方法,参数为Animal抽象类,需要抽象类的子类对象
public void useAnimal(_Animal a){
// Animal a = new Cat();
// 编译看左边:Animal父类有eat()方法,执行看右边Cat子类重写的eat()方法
a.eat(); }
// 定义一个方法,返回值类型为Animal类
public Animal getAnimal(){
// 抽象类不能直接实例对象,需要返回子类对象
Animal a = new Cat();
return a; } }
———————————————————-
public class Cat extends Animal{
@Override
public void eat() { System._out.println(“猫吃鱼”); } }
———————————————————-
public class AnmialDemo {
_public static void main(String[] args) {
// 创建操作类对象,并调用方法
AnimalOperator ao = new AnimalOperator();
// 抽象类不能直接实例对象,只能通过多态继承实例对象
Animal animal = new Cat();
ao.useAnimal(animal);
System._out.println(“———————“);
// 调用返回值方法,一键ctrl+alt+v生成类指向
// 返回的值是Animal继承子类Cat的对象
// Animal animal1 = new Cat();
Animal animal1 = ao.getAnimal();//
animal1.eat(); } }
3、接口名作为形参和返回值
3.1 方法的形参是接口名,其实需要的是该接口的子类实例对象(抽象类无法直接实例对象)
3.2 方法的返回值是接口名,其实返回的是该接口的子类实例对象
public class Human implements Jumpping{
// 因为接口没法直接实例化,定义一个子类实现接口
@Override
public void jump() { _System._out.println(“人跳高”); } }
————————————————————————————-
public interface Jumpping {
// 接口的方法默认修饰public abstract抽象方法
void jump(); }
———————————————————————————-
public class JumppingDemo {
_public static void main(String[] args) {
// 创建操作类对象并调用方法
JumppingOperator jo = new JumppingOperator();
Jumpping j = new Human();
jo.useJumpping(j);
System._out.println(“—————————“);
Jumpping jumpping = jo.getJumpping();// jumping = new Cat()
jumpping.jump(); } }
————————————————————————————-
public class JumppingOperator {
// 将接口Jumpping作为形参,其实需要的是该接口的实现类
public void useJumpping(_Jumpping j){ j.jump(); }
// 将接口Jumpping作为返回值,其实需要的是该接口的实现类
public Jumpping getJumpping(){
Jumpping j = new Human();
return j; } }_