JAVA:将类、抽象类、接口当成方法的参数传入 |
您所在的位置:网站首页 › java中抽象类可以实例化吗 › JAVA:将类、抽象类、接口当成方法的参数传入 |
将类当成参数传入方法,其实就是将类的对象传入方法,如果是抽象类,其实就是将抽象类的子类的对象传入方法,如果是接口,其实就是将接口实现类的对象传入方法。 因为抽象类和接口是不能实例化成对象的,所以必须找它们的子类或实现类 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("不准吸烟"); } } ); 总结:类当成方法参数传入,其实就是传对象。抽象类和接口其实就是传其子类或实现类的对象。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |