JAVA:将类、抽象类、接口当成方法的参数传入

转:https://www.cnblogs.com/java-demo/articles/9142993.html

将类当成参数传入方法,其实就是将类的对象传入方法,如果是抽象类,其实就是将抽象类的子类的对象传入方法,如果是接口,其实就是将接口实现类的对象传入方法。

因为抽象类和接口是不能实例化成对象的,所以必须找它们的子类或实现类

1. 普通类对象当成方法参数传入

public class Person{

  public void eat(){

    System.out.println("吃饭");

  }

}

//方法

public static void operatePerson(Person p){ 

  p.eat();

}

//main调用方法,将person对象传入方法中

operatePerson(new person());

2. 抽象类作为方法参数传入

//抽象类

public abstract class Animal{

  public abstratc void eat();

}

//Animal的子类

public class Cat extends Animal{

  //重写方法

  public void eat(){

    System.out.println("猫吃鱼");

  }

}

//main中的方法,这里要求传入Animal类,但Animal的类是一个抽象类,不能实例对象,所以只能传其子类。

function static void operateAnimal(Animal a){

  a.eat();

}

//方法的调用

Animal a = new Cat();

operateAnimal(new cat());或operateAnimal(a);

当然,还要以通过内部类一次性传参

operateAnimal(

  new Animal(){

    //重写animal抽象方法

    public void eat(){System.out.println("猫还吃饭");}

  }

);

要求传入父类对象,但可以传入任意子类对象,这样就使得扩展性得到提高

operateAnimal(new Cat());

operateAnimal(new Dog());

operateAnimal(new Bird());

......

传入什么类,就调用什么类的功能,这就是多态的实现。

3. 接口实现类的对象当成方法参数传入

public interface Smoking{

  public abstract void smoking();

}

//实现类

public class Student implements Smoking{

  //实现接口方法

  public void smoking(){

    System.out.println("抽烟中....");

  }

}

//main中定义方法,将接口实现类当方法参数传入

public static void operateSmoking(Smoking s){

  s.smoking();

}

//方法的调用

Smoking s = new Student();

operateSmoking(s);或operateSmoking(new Student());

或用内部类传入

operateSmoking(

  new Smoking(){

    //重写接口方法

    public void smoking(){

      System.out.println("不准吸烟");

    }

  }

);

总结:类当成方法参数传入,其实就是传对象。抽象类和接口其实就是传其子类或实现类的对象。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值