《thinking in java》 接口与内部类
2015-03-05 19:08
316 查看
书本上的例子
改编后的。
可以顺利运行。
PS:编译器识别代码总是从左到右,从上到下,一步步进行的。至于代码的运行逻辑,那是识别之后的事情。
改编后的。
package test2; class A{ interface B{void f();} public class BImp implements B{public void f(){}} private class BImp2 implements B{public void f(){}} public interface C{void f();} class CImp implements C{public void f(){}} private class CImp2 implements C{public void f(){}} private interface D{void f();} private class DImp implements D{public void f(){}} public class DImp2 implements D{public void f(){}} public D getD(){return new DImp2();} private D dRef; public void receiveD(D d){dRef=d;dRef.f();} } interface E{ interface G{void f();} public interface H{void f();} void g(); } public class NestingInterfaces { public class BImp implements A.B{public void f(){}} class CImp implements A.C{public void f(){}} // The type A.D is not visible // class DImp implements A.D{public void f(){}} class EImp implements E{public void g(){}} class EGimp implements E.G{public void f(){}} class EImp2 implements E{ public void g(){} class EG implements E.G{public void f(){}} } public static void main(String[] args) { A a=new A(); //编译器在A.D处报错:The type A.D is not visible // A.D ad=a.getD(); //编译器在 a.getD() 处报错:Type mismatch: cannot convert from A.D to A.DImp2 // A.DImp2 di2=a.getD(); A.DImp2 di2=(A.DImp2)a.getD(); System.out.println(di2.getClass().getName());//test2.A$DImp2 //The type A.D is not visible // a.getD().f(); ((A.DImp2)a.getD()).f(); A a2=new A(); a2.receiveD(a.getD()); } }
可以顺利运行。
PS:编译器识别代码总是从左到右,从上到下,一步步进行的。至于代码的运行逻辑,那是识别之后的事情。
相关文章推荐
- Thinking in Java之Set接口、HashSet源码学习
- 第十章:内部类 《Thinking in java》学习笔记
- Thinking-in-Java 读书笔记-10-内部类
- 通过类字面常量解释接口常量为什么只能定义为static final,类加载过程---Thinking in java
- thinking-in-java(10)内部类
- 再读thinking in java -- 第八章 多态 & 第九章 接口
- 《thinking in java》笔记13-内部类
- 第9章 接口 —— 《Thinking in Java》学习笔记
- #Thinking in Java阅读笔记# 第九章 接口
- 《Thinkinginjava》第10章-内部类
- 再读thinking in java -- 第十章 内部类
- 第十章:内部类 《Thinking in java》学习笔记
- Thinking in Java 内部类
- day8:《Thinking in Java》笔记第九章---接口
- thinking in java:接口和抽象类
- Thinking-in-Java 读书笔记-9-接口
- 《thinking in java》笔记12-接口中的字段和变量
- 通过类字面常量解释接口常量为什么只能定义为static final,类加载过程---Thinking in java
- 《Thinkinginjava》第9章-接口
- Exception in thread "main" java.lang.ClassCastException: $Proxy0 利用匿名内部类创建InvocationHandler接口实现