接口作为方法参数传递
接口作为方法参数的情况是很常见的,经常会碰到。当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象。如下代码演示。
package day14;
//接口作为方法参数传递
public interface smoking {
public static final int A=1;
public abstract void smoking();
}
package day14;
//接口的实现类
public class student implements smoking {public void smoking() {
System.out.println("禁止吸烟");
}
}
package day14;
//测试类,接口作为方法参数传递
public class TestSmokingArgument {
public static void main(String[] args) {
//调用nosmoking方法,传递实现类对象
//实现类对象是自己的对象
student p=new student();
nosmoking(p);
nosmoking(new student());//匿名对象//用多态调用也可以,两种方式
smoking s=new student();
nosmoking(p);
}
/*
* 定义方法,方法参数,接口类型
* 方法的参数是smoking的接口类型
* 调用方法,必须传递接口的任意实现类的对象
*/
public static void nosmoking(smoking s){
//调用接口中的常量A
System.out.println(smoking.A);
//接口的引用变量s,调用方法
s.smoking();
}
}
接口作为返回值方法传递
接口作为方法返回值的情况,在后面的学习中会碰到。当遇到方法返回值是接口类型时,那么该方法需要返回一个接口实现类对象。如下代码演示。
package day14;
//接口作为方法返回值
public class Getsmoking {
/*
* 定义方法,方法的返回值是接口类型
* 接口是不能创建对象,return语句后面返回的是他实现类的对象
*/
public smoking getsmoking(){
return new student();
}
}
package day14;
public class getsmokingReturn {
public static void main(String[] args) {
//调用Getsmoking类的方法getsmoking获取smoking接口的实现类的对象
Getsmoking s=new Getsmoking();
smoking p =s.getsmoking();//方法的执行结果是接口的实现类对象 new student
p.smoking();
}
}