A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨博 中级黑马   /  2013-3-16 22:31  /  1481 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨博 于 2013-3-16 23:15 编辑
  1. class Test1
  2. {
  3. public static void main(String[] args)
  4. {
  5. Outer out=new Outer();

  6. myInter obj=out.show();

  7. obj.print();
  8. }
  9. }

  10. class Outer
  11. {
  12. public myInter show(){

  13. class Inner implements myInter
  14. {
  15. public void print(){
  16. System.out.println("print msg");
  17. }
  18. }
  19. Inner in=new Inner();

  20. return in;
  21. }
  22. }

  23. interface myInter
  24. {
  25. void print();
  26. }
复制代码
为什么我想直接访问内部类方法:Object obj=new Outer().show();不成功,为什么做了接口,能成功访问,我的疑问是,myInter obj=out.show();这个运行,怎么就能访问到了,求解答

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
这个是影藏的工厂模式,outer的show方法制造了一个接口实现的内部类的对象,这样就是父类引用指向了子类对象,这样就可以直接调用子类特有的方法了。
回复 使用道具 举报
最后一句错了,是子类重写父类的方法。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马