版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~ http://blog.csdn.net/xiaoduan_/article/details/79334348
如果想要创建某些公共代码,使得他们可以被某个接口的所有不同实现所共用,那么接口内部的嵌套类会显得比较方便,也就是说在接口中可以含有内部类。 例子 1. 首先创建接口,接口中定义类普通内部类InnerClass和抽象内部类AbIunnerClass
public interface IOuterInterface int TEMP = 100; void abMethod();//抽象方法 public default void deMethod(){//jdk1.8后可以添加 System.out.println("接口中的默认方法"); } public static void setMethod(){//jdk1.8后可以添加 System.out.println("接口中的静态方法"); } public class InnerClass{ public void show(){ System.out.println("接口中的普通内部类"); } } public abstract class AbInnerClass{ public abstract void abInfo(); public void info(){ System.out.println("接口中可以定义抽象内部类");} } 普通成员内部类的实例化 创建接口的实现类ClassDemo public class ClassDemo implements IOuterInterface{ @Override public void abMethod(){ System.out.println("实现类"); } //获取接口中内部类方法 public InnerClass getInner(){ return new InnerClass(); } } 获取普通内部类对象,调用方法 public class Test{ public static void main(String[] args){ //第一种实例化对象方式:通过接口名.类名 进行实例化 IOuterInterface.InnerClass inner = new IOuterInterface.InnerClass(); inner.show(); //第二种实例化对象的方式: //通过在实现类中创建接口中内部类获取方法 用实现类对象调用获取方法 ClassDemo demo = new ClassDemo(); demo.getInner().show(); //第三种实例化对象的方式:将内部类导入后直接实例化 InnerClass innerTwo = new InnerClass(); innerTwo.show(); } } 抽象成员内部类的实例化 创建接口的实现类AbClassDemo public class AbClassDemo implements IOuterInterface{ @Override public void abMethod(){ } //继承抽象类AbInnerClass public class AbDemo extends AbInnerClass{ @Override public void abInfo(){ System.out.println("重写接口中抽象类的中的抽象方法"); } }获取抽象内部类对象,调用方法
public class TestOne{ public static void main(String[] args){ //第一种实例化对象方法: //通过接口名.类名进行实例化 //但是对于抽象类而言,不能直接进行实例化,所以是用匿名内部类的方式 IOuterInterface.AbinnerClass abInner = new IOuterInterface.AbInnerClass(){ public void abInfo(){ System.out.println("重写抽象类中的抽象方法"); } }; abInner.anInfo(); abInner.info(); //第二种实例化方法 //在实现类中定义内部类继承接口中的抽象内部类 IOuterInterface.AbInnerClass abInnerOne = new AbClassDemo().new AbDemo(); abInner.anInfo(); abInner.info(); }